c - 在 C 中将常量类型转换为 short int 时发出警告

标签 c casting integer compiler-warnings short

我收到这样的警告“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/

相关文章:

c - 在启用换行的情况下将终端光标返回到行首

c - C语言中如何选择小数位数

c - 使用 snprintf 在开头追加

python - 在 Python 3 中将 str 显式转换为 float

求两个 float 之比的算法?

haskell - 有没有在 Haskell 中使用自然数的实用方法?

c - 设置为 0.1 的 float 将 false 与 0.1 进行比较

java - 接口(interface)类型转换困境

c - 整数从字符串[]接收到错误的值

c - 有符号和无符号机器字类型