Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Приведение типов


Автор: Randajad 15.8.2012, 13:32
Всем привет!

http://liveworkspace.org/code/46e0eaec28a08d1c23aaf0e31f0c9b62

http://liveworkspace.org/code/0b9fc64ce7493adfde0f4cb4eb657852

Разные результаты. Почему?
Компилятор конструкцию вида:
Код

short k = j + c;


Превращает в:
short k = (short)j + c;

Что-ли?

Автор: korian 15.8.2012, 14:06
Компилятор конструкцию вида, превращает в 
short k = (short)((int)j + (int)c);

Автор: Randajad 15.8.2012, 14:15
Почему int? А если там 64 битные переменные?

Автор: korian 15.8.2012, 14:43
Я точно не помню, но где-то так:
Для проведения любой операции над встроенными типами:
если один из операндов больше другого, он кастится в больший тип.
если целочисленный операнд меньше int, он как минимум кастится в инт.
если операнд с плавающей точкой меньше double, он как минимум кастится в double

Автор: Randajad 15.8.2012, 21:41
Спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)