Вот тут отлавливал багу и наткнулся на такой вот интересный случай.
Допустим имеем следующий код:
Код: Выделить всё
#include <stdint.h>
int main(void)
{
const int16_t big = 0x1F67;
int8_t small;
small = big;
return 0;
}Как видно, имеет место потеря старшего байта, что возможно является ошибкой в программе. Разумно программисту явно указать приведение типов.
Если компилим его командой gcc -Wall test.c, то всё собирается без каких-либо предупреждений.
Если же собирать его командой g++ -Wall test.c, то выдаётся предупреждение
warning: overflow in implicit constant conversion
Неужели в Си не должно быть тоже предупреждения?