各位不要咬文嚼字了, int 在不同平台,长度可能不同,这一点本身也很基础。我如果是面试官,这种题我是希望回答者能自己指出这一点的。况且楼主明确提示了 32 位系统,这还答不上来,该怎么说呢。
@
LINEX 如果我去面试,有人问我这个,我确实觉得是被侮辱了,不过那是在我答的出来的情况下。如果我答不出来,那才是彻底的被羞辱了。不知道 int 的容量,你怎么知道业务中的某个值能不能放在 int 中呢,等出 bug 了再来改么?这种事和语言是无关的,和你有什么思路也是无关的。
@
sun2920989 c 语言下 int 最大值是定义在 limits.h 里的,在 32 位系统下,大多数情况下 limits.h 看起来是这样的:
#define SHRT_MIN (-32768) /* minimum (signed) short value */
#define SHRT_MAX 32767 /* maximum (signed) short value */
#define USHRT_MAX 0xffff /* maximum unsigned short value */
#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX 2147483647 /* maximum (signed) int value */
msvc, gcc 都如此。当然,我不能排除你用的某编译器在 32 位系统下, int 也是 16 位的。不过我觉得你恐怕没想到这一步。
另外,作为 php 程序员,也不应该看到 32 位 int ,却联想到 32767 。
PHP_INT_MAX (integer)
The largest integer supported in this build of PHP. Usually int(2147483647). Available since PHP 5.0.5
PHP_INT_MIN (integer)
The smallest integer supported in this build of PHP. Usually int(-2147483648) in 32 bit systems and int(-9223372036854775808) in 64 bit systems. Available since PHP 7.0.0. Usually, PHP_INT_MIN === ~PHP_INT_MAX.