Я работаю с GCC v4.4.5, и я не знаю схему целых чисел по умолчанию, которую я не ожидал.GCC, странная схема продвижения по целому ряду
Чтобы активировать достаточно предупреждений для предотвращения неявных ошибок, я активировал опцию -Wconversion, и с тех пор я заметил, что при выполнении кода ниже предупреждение «преобразование в« короткий int »из« int »может изменить его значение " есть.
signed short sA, sB=1, sC=2;
sA = sB + sC;
Это означает, что "вВ + СБН" повышен до Int, а затем присваивается SÁ, который подписал короткий. Чтобы исправить это предупреждение, я должен сделать это так.
signed short sA, sB=1, sC=2;
sA = (signed short)(sB + sC);
Данное предупреждение также представлено в приведенном ниже коде.
signed short sA=2;
sA += 5;
И может быть решена удалением оператора + = этим ...
sA = (signed short)(sA + 1);
который немного раздражает, потому что я не могу использовать операторы + =, - =.
Я ожидал, что GCC будет выбирать правильное целочисленное продвижение по операндам. Я имею в виду, SÁ = вВ + СБН и SÁ + = 5 не должно быть повышен до Int так как все они подписали короткие.
Я понимаю, что продвижение к Int по умолчанию предотвращает переполнение ошибок, но это немного раздражает, потому что я должен бросить большую часть моего кода или изменить переменные Int.
Есть ли опция GCC, которую я мог бы использовать для представления этой цельной схемы продвижения?
Благодарим за помощь.
У меня нет решения, но вы всегда можете написать 'short' вместо' signed short' в полном объеме, что может сделать это немного менее раздражающим. Я признаю, что это все еще раздражает. –