首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

64位Linux下,int仍然是整型32位

2012-09-14 
64位Linux上,int仍然是整型32位?x86_64的Linux:C/C++ codeint main(void) {int fooscanf(%i, &foo)print

64位Linux上,int仍然是整型32位?
x86_64的Linux:

C/C++ code
int main(void) {    int foo    scanf("%i", &foo)    printf("%i", foo)    return 0}


输入2147483648后就溢出了,查阅了/usr/include/limits.h,发现:

C/C++ code
/* Minimum and maximum values a `signed int' can hold.  */                  #  define INT_MIN       (-INT_MAX - 1)                                      #  define INT_MAX       2147483647


也就是说;int永远是整型32位?那64的整型用什么数据类型?

[解决办法]
1)int 只会保证比short类型字节数多于后者相等;
2)想要确保用64的整型,可靠地方法是用long long;
[解决办法]
探讨

这个要看编译器,gcc似乎是int是4位,void*是8位的,64位的大概是long long

[解决办法]
可靠的是用stdint.h的int64_t。标准库保证在你的平台上,这个一定是给定位数的。
[解决办法]
64位long是8字节,而32位需要用long long,当然64位的long long仍旧是8字节,为了兼容32位设计的。

int在两者都是4字节。

热点排行