C语言int类型最大值

“主要问题是出在输出控制上,因为你定义的是无符号整数因此16位都用来表示数值,没有符号位,但是你输出处用%d是不对的,%d是用来输出有符号整型数的。因此会将b的值以有符号的形式输出。而65536这个值在16位有符号整数表示中正好是-1.

现在基本都是用32位表示整型数了,因此这样写,不会在32位编译系统中发错误。”

请问现在unix下C中int类型的最大长度到底是2的16次方-1还是2的32次方-1?
我用:
int i = 90000;
依然可以用%d打印,按说”大是0---65535,8位2进制数,有符号也是8位2进制,只不过第一位用来表示符号了,所以有符号的范围是-32768---32767.“

谢谢!

0x00CBF95C是int变量a的地址,从内存查看器可以看出,十进制数16被存储为00 00 00 10

说明单个'0'存储范围为0-15,表示成二进制的话,一个'0'存储范围相当于0000~1111,4个二进制位;

这里有8个'0',相当于一个int型是由4*8=32个二进制位来表示。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-02
C语言规范中并没有规定Int型到底用多少位,只是规定了不能小于16位。Int的字节数具体取决于具体的系统和编译器,unix下int型一般都是32位的。
第2个回答  推荐于2018-05-22
K&R的C程序设计说了int的大小与机器有关。

#include <stdio.h>
#include <limits.h>

int main(void)
{
printf("%d\n", INT_MAX);
return 0;
}

可以验证最大int.本回答被网友采纳
第3个回答  2012-11-02
你可以用sizeof(int)看下是几位,就知道是32,还是16了,也许是64.。。。
第4个回答  2017-08-01
-2147483648~+2147483647
相似回答