读书人

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

发布时间: 2012-09-14 23:00:49 作者: rapoo

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字节。

读书人网 >C语言

热点推荐