ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
12179 Топик полностью
Bill (28.07.2004 10:38, просмотров: 1) ответил Алексей Мусин на Bill и LA, просто поиграйтесь с исходником по ссылке
И что, он ни о чем не говорит. Ты берешь число со знаком, которое печатается как long. Расширения знака не происходит. Попробуй его напечатать как %d и увидишь. Более того, я несколько изменил код, в соответствии со своими заявлениями и все работает корректно
#include 
#include 

void main (void)
{
    unsigned char high_byte = 0xFF;  // -251 dec
    unsigned char low_byte  = 0x05;
    int result;

    result = low_byte | ((int)high_byte << 8);
    printf ("result = %d\n", result);

    result = low_byte | ( (int)(signed char)high_byte * 256 );
    printf ("result = %d\n", result);

    result = low_byte | ( (int)(signed char)high_byte << 8 );
    printf ("result = %d\n", result);

    getch ();
}
Можете проверить.