В следующей программе строка 5 выдает предупреждение о переполнении, как и ожидалось, но, что удивительно, строка 4 не выдает никаких предупреждений в GCC: http://www.ideone.com/U0BXn
int main()
{
int i = 256;
char c1 = i; //line 4
char c2 = 256; //line 5
return 0;
}
Я думал, что обе строки должны выдавать предупреждение overflow. Или я что-то упускаю?
Тема, которая побудила меня провести этот эксперимент, такова: проверка типов typedef?
Там я сказал следующее (которое я удалил из своего ответа, потому что, когда я его запустил, он не появился, как я ожидал):
//However, you'll get warning for this case:
typedef int T1;
typedef char T2;
T1 x = 256;
T2 y = x; //possible overflow warning! (but it doesn't give warning :()
-Wall
! - person Nawaz   schedule 23.02.2011