DSP

long long C/C++的64位整型 不同编译器间的比较

2019-07-13 15:02发布

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 特有的。