作者HZYSoft (PCMan 2004)
看板C_and_CPP
標題Re: [問題] __int64位啥不能assign值進去
時間Wed Jan 25 03:25:51 2006
※ 引述《feosus (FEOSUS)》之銘言:
: 我的程式用到__int64的data type
: 在compiler時卻發生了錯誤
: __int64 x;
: cin >> x;
: 他顯示no operator defined which takes a right-hand operand of type '__int64'
: (orthere is no acceptable conversion)
: 感覺非常奇怪,原本使用的環境是Visual c++ 6.0
: 後來我換了一個環境Dev c++卻又可以成功的執行
: 小弟是新手不知道有沒有版友可以幫我解答<(_ _)>
因為本來就沒有 __int64 這種東西
這是微軟自創語法.... 不能用很正常
64 bit 整數各家 compiler 支援方式不一
VC++ 用 __int64
gcc 用 long long
你可以 typedef long long __int64
你以為這樣就結束了嗎?沒有
你用 c++ 還好,你如果用了 C 的 printf....
很不幸, VC++ 和 gcc 在 format 對 64 bit int 的指定方式不同
一個是 I64
另一個是 lld
基本上大部分的 compiler 都差不多,一般是只有微軟的會跟大家都不一樣
所以建議你除非必要不要用 VC++,以免自找麻煩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.100.8
→ UNARYvvv:long long 是 %lld 01/25 03:26
→ HZYSoft:謝謝更正,剛剛漏打,是 lld 沒錯 @@ 虧我前天才用到 >< 01/25 03:26
※ 編輯: HZYSoft 來自: 218.167.100.8 (01/25 03:27)
推 cplusplus:要用的話請用VC7 cin cout已經有支援long long的IO 01/25 08:17