С моим компилятором c
- 54464 (урезано 16 бит), а d
- 10176.
Но с gcc
, c
- 120000, а d
- 600000.
Каково истинное поведение? Является ли поведение undefined? Или мой компилятор false?
unsigned short a = 60000;
unsigned short b = 60000;
unsigned long c = a + b;
unsigned long d = a * 10;
Есть ли возможность предупредить об этих случаях?
Wconversion предупреждает:
void foo(unsigned long a);
foo(a+b);
но не предупреждает:
unsigned long c = a + b