Пример 1)
Почему получается странное большое целое число, а не 255?
Код: Выделить всё
unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y);
Почему получается «-1 больше 0»?
Код: Выделить всё
unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
puts("-1 is larger than 0");
Почему изменение типа в приведенном выше примере на короткий решает проблему?
Код: Выделить всё
unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
puts("-1 is larger than 0"); // will not print
Подробнее здесь: https://stackoverflow.com/questions/460 ... tion-rules
Мобильная версия