我收到这样的警告“C4310:转换截断常量值”。 相关代码是
short a = 100;
if( a == (short)0x8000 ) ;// Warning is got here.
在不将 0x8000 设为常量或变量值且不进行类型转换 a 的情况下,有什么方法可以消除警告?
如果我将条件行修改为
if( a == (short)-32768 ) ;// No warning seen
这是为什么?
谢谢。
最佳答案
警告告诉你一些重要的事情。
假设 short
为 16 位,有效值为 -32768 到 32767。值 0x8000
(32768) 超出了 short
的范围.
使用 -32768 是可行的,因为它适合 short
的范围内,实际上在这种情况下不需要强制转换。
关于c - 在 C 中将常量类型转换为 short int 时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246637/