LINUX.ORG.RU

История изменений

Исправление bga_, (текущая версия) :

Я вообще такой код пишу не надеясь на всякие implicit conversion, integer promotion. Считаю что выражение имеет тип первого операнда (если он больше int). Если меньше то придется еще и кастануть.

 
	uint64_t(x) + y; // будет uint64_t
	uint16_t(x) + y; // будет int
	uint16_t(x + y); // так точно будет uint16_t


Итого всегда явно кастуй.

Исходная версия bga_, :

Я вообще такой код пишу не надеясь на всякие implicit conversion, integer promotion. Считаю что выражение имеет тип первого операнда (если он больше int). Если меньше то придется еще и кастануть.

 
	uint64_t(x) + y; // будет uint64_t
	uint16_t(x) + y; // будет int
	uint16_t(x + y); // так точно будет uint16_t