Pit*_*kos 2 c integer range variable-assignment long-integer
据我所知,整数在32,768到32,767之间.长整数范围为2,147,483,648到2,147,483,647.我加倍检查wikipedeia以确保.
现在的问题是:
int a=2147483647;
printf("a: %d\n", a);
Run Code Online (Sandbox Code Playgroud)
为什么这样做?如果我将1添加到2147483647然后它会打印垃圾,如果变量是一个长整数,则可以预期.但为什么它允许我在一开始就为整数分配一个长整数?
Jam*_*lis 11
据我所知,整数在32,768到32,767之间.
这是不正确的.范围int至少为-32,767至32,767; 它可能具有更大的范围,并且在大多数32位和64位平台上都可以.
您可以int通过选中INT_MAX和中INT_MIN定义的宏来查找平台上的类型范围<limits.h>.
你知道的是错的.
不同于如Java,的确切大小一些其他语言int和long在C是定义(withing设置的限度)实现.显然,您使用的int是32位宽的平台,但在其他平台上,它可能是16位,在某些平台上int是64位宽.
同样,在某些平台上,long是32位宽; 在其他人身上它是64位宽.如果一个平台选择这样做,它可能会更广泛.