我最近开始学习C.我已经读过整数范围的gcc是 - 214783648 to +2147483647
。
在CentOS上使用GCC。
我明白它是2 ^ 32被分成两部分和0。
这是对编译器施加的限制吗?这有什么优势吗?或者我的编译器是32位? (据我所知,我的电脑是64位)。
如果一个人超过这个限制,应该怎么办?
先谢谢
答案 0 :(得分:1)
整数的大小是特定于平台的。 C标准没有准确说明int
必须具有多少位,所有它说的是int
必须至少为16位长。这不是对编译器的限制 - 相反,它是定义平台的许多编译器属性之一。
平台的位置不会对平台上int
的大小产生直接影响。您通常可以使用相同的编译器生成32位和64位代码(使用gcc,您可以使用标志-m32或-m64),但内置类型的大小不一定会改变。
如果你需要更大的整数范围,你可以使用long long
,保证至少有64位。此外,gcc支持128位整数类型__int128
。如果您需要更多范围,可以使用任意精度数学包。
答案 1 :(得分:0)
它与二进制数和整数数据类型有多少位有关。通常,整数由4个字节= 32位组成,因此整数可以为有符号整数存储2 ^ 32个值[0,2 32 - 1]或[-214783648,2147483647]。
据我所知,如果一个超出范围的行为是未定义的。这称为Integer overflow。