#include<stdio.h>
int main()
{
int a;
a=100000000;
printf("%d",a);
return(0);
}
//为什么a的值会被打印,即使它大于int的范围?
答案 0 :(得分:3)
因为c中int类型的范围是-32767到32767
你有错误的假设。
类型x
的范围未已修复。 int不一定是16位。
C标准没有为int
定义固定范围。它需要一致的实现支持至少 int
的范围-32767到32767。但是实现可以支持更高的范围。在大多数系统上,int
是32位宽。
所以输出中没有任何意外。
如果您想知道确切的限制,那么您可以使用int
中的宏INT_MIN
和INT_MAX
。
答案 1 :(得分:2)
这个数字适合32位整数,最多可以容纳2,147,483,647(签名)。
答案 2 :(得分:1)
“int”的大小可能因CPU架构而异。如果你想绝对确定你的整数使用的大小:
int32_t a; //this is a 32bit signed integer
uint16_t b; //16 bit unsigned integer
代替。
答案 3 :(得分:0)
在C中,整数的大小可以是2,4或甚至8个字节。这可能取决于您使用的编译器以及您的系统。
以上在旧版编译器中都是如此。
但事实并非如此。需要交叉编译(除其他外)以绕过主机CPU的int与目标CPU上使用的int不同。当移植代码以在多个平台上使用时,这可能会导致问题。大多数现代C编译器都允许用户更改整数的大小。