Нет предупреждения о присвоении int переменной short (gcc)

Я часто использую присвоение «длинных» типизированных переменных «более коротким», например int на short или с uint32_t на uint8_t . Однажды я решил найти все такие случаи в своем коде с помощью gcc, но к своему удивлению обнаружил, что gcc не выводит никаких предупреждений!

int long_value;
short short_value;
std::cin >> long_value; // Example input: 32769
short_value = long_value; // MS Visual Studio complains here at warning level 4
std::cout << "Long: " << long_value << '\n'; // My example output: 32769
std::cout << "Short: " << short_value << '\n'; // My example output: -32767

Использование gcc -Wall или gcc -Wconversion не помогло (gcc не выводил никаких предупреждений). Фактически, он никогда не выводит никаких предупреждений для любого типа ввода и вывода (например, long и unsigned char ).

Я никогда не обнаруживал фактических ошибок в gcc, поэтому я почти уверен у такого поведения есть причина.

Так почему же нет предупреждения?

Обновление: я использую gcc 4.1.2.

5
задан anatolyg 2 January 2011 в 19:15
поделиться