64位Linux下,int仍然是整型32位
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++ codeint 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;
[解决办法][解决办法]可靠的是用stdint.h的int64_t。标准库保证在你的平台上,这个一定是给定位数的。
[解决办法]64位long是8字节,而32位需要用long long,当然64位的long long仍旧是8字节,为了兼容32位设计的。
int在两者都是4字节。