В следующей программе строка 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;
}
Я думал, что обе строки должны давать предупреждение о переполнении. Или что-то мне не хватает?
Тема, которая привела меня к этому эксперименту, такова: проверка типа 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 :()