C/C++的64位整型 不同编译器间的比较[ZZ]
如果服务器是linux系统,那么定义用long long,IO用%lld
如果服务器是win系统,那么声明要针对编译器而定:+ 如果用MS系列编译器,声明用__int64 [现在新版的Visual Studio也支持long long了]+ 如果用MinGW环境,声明用long long+ 无论什么编译器,IO一律%I64d
变量定义 |
输出方式 |
gcc(mingw32) |
g++(mingw32) |
gcc(linux i386) |
g++(linux i386) |
MicrosoftVisual C++ 6.0 |
long long
“%lld”
错误
错误
正确
正确
无法编译
long long
“%I64d”
正确
正确
错误
错误
无法编译
__int64
“lld”
错误
错误
无法编译
无法编译
错误
__int64
“%I64d”
正确
正确
无法编译
无法编译
正确
long long
cout
非C++
正确
非C++
正确
无法编译
__int64
cout
非C++
正确
非C++
无法编译
无法编译
long long
printint64()
正确
正确
正确
正确
无法编译
一种通用的输出方式:
void printint64(long long a) { if (a<=100000000) printf("%d
",a); else { printf("%d",a/100000000); printf("%08d
",a%100000000); } }
http://blog.csdn.net/hongxdong/article/details/5559312
注意:long long 和 unsigned long long 是 C99 特有的。