今天遇到一個問題,c中int只有32位,但要用到64位時怎麼辦?
最初我用的是long long但發現這樣編譯不能通過,查找了資料才知道每個編譯器定義,輸出的方式不同,下面把他分享出來
變量定義 |
輸出方式 |
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() |
正確 |
正確 |
正確 |
正確 |
無法編譯 |
原文地址:點擊打開鏈接