【发布时间】:2013-07-23 02:57:54
【问题描述】:
我在 /usr/include/limits.h 中找到了以下定义:
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647
此外,这个头文件中的所有 XXX_MAX 似乎都是从一个数字常量显式定义的。
我想知道是否有一种可移植的方式(针对跨平台的不同字长)来定义 INT_MAX ?
我尝试了以下方法:
~((int)-1)
但这似乎不正确。
简短的解释也受到高度重视。
【问题讨论】:
-
~((int)-1)可能为零。 -
哦,是的!你说的对。但我不明白为什么。你能解释一下吗?非常感谢!
-
-1的位模式在二进制补码系统中都是 1。全一字的补码 (~) 是全零字。 -
太棒了!谢谢! @CarlNorum
-
你为什么关心,因为
<limits.h>是在 C99 & C11 & POSIX 标准中指定的?