我正在使用TDD进行编程,其中所有警告都转换为错误,并且出现了奇怪的警告/错误。我有这样的代码
short int a = 0;
/* .... */
a = a + 2;
我编译时收到此消息
错误:从'int'转换为'short int'可能会更改其值[-Werror = conversion]
但如果我更改此行:
a = (short int)(a + 2);
错误消失了。我的问题是,是否真的需要强制执行所有增量/减量或任何基本操作?为什么在所有变量或常量均为short int的操作中,编译器将某些内容强制转换为int?即使我将行更改为
a = a + (short int)1;
出现错误,所以我认为问题不在于常数
我用
g ++(Debian 6.3.0-18 + deb9u1)6.3.0 20170516
非常感谢