Правила неявного повышения типаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Правила неявного повышения типа

Сообщение Anonymous »

Этот пост предназначен для использования в качестве часто задаваемых вопросов по неявному целочисленному расширению в C, особенно неявному расширению, вызванному обычными арифметическими преобразованиями и/или целочисленным преобразованиям.
Пример 1)

Почему получается странное большое целое число, а не 255?

Код: Выделить всё

unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y);
Пример 2)

Почему получается «-1 больше 0»?

Код: Выделить всё

unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
puts("-1 is larger than 0");
Пример 3)

Почему изменение типа в приведенном выше примере на короткий решает проблему?

Код: Выделить всё

unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
puts("-1 is larger than 0"); // will not print
(Эти примеры были предназначены для 32- или 64-битного компьютера с короткими 16-битными версиями.)

Подробнее здесь: https://stackoverflow.com/questions/460 ... tion-rules
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»