C语言INT_MIN的写法
关于为什么
中将INT_MAX定义为-INT_MAX-1
limits.h头文件中int定义
1 |
原因
- 在C语言中,
-2147483648
会被理解为-
和2147483648
,是由一个符号和一个数值组合而成,而2147483648
超过了int的最大表示范围。 - C语言标准规定,强制类型转换时先改变大小再改变有符号类型,例如假设有
short
类型的变量n
,把n
转换为unsigned
类型时,会先被转换为int
,再转换为unsigned
,而非先转换为unsigned short
再转为unsigned
,即等价于(unsigned)(int)short
而非(unsigned)(unsigned short)short
- 所以
-2147483648
会被转为更大的有符号类型long long
(或long
,视你电脑该数据类型大小而进行自动转换),所以最终返回的是一个long long
(或long
)类型。
相关代码
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 五味子!