1樓:
當進行64位與32位的混合運算時,32位整數會被隱式轉換成64位整數。但是,vc的輸入輸出與__int64的相容就不是很好了,如果你寫下這樣一段**:
1 __int64 a;
2 cin >> a;
3 cout << a;
那麼,在第2行會收到「error c2679: binary '>>' : no operator defined which takes a right-hand operand of type '__int64' (or there is no acceptable conversion)」的錯誤;在第3行會收到「error c2593:
'operator <<' is ambiguous」的錯誤。那是不是就不能進行輸入輸出呢?當然不是,你可以使用c的寫法:
scanf("%i64d",&a);
printf("%i64d",a);
就可以正確輸入輸出了。當使用unsigned __int64時,把"i64d"改為"i64u"就可以了。
oj通常使用g++編譯器。其64位擴充套件方式與vc有所不同,它們分別叫做long long 與 unsigned long long。處理規模與除輸入輸出外的使用方法同上。
對於輸入輸出,它的擴充套件比vc好。既可以使用
1 long long a;
2 cin>>a;
3 cout<也可以使用
scanf("%lld",&a);
printf("%lld",a);
使用無符號數時,將"%lld"改成"%llu"即可。
最後我補充一點:作為一個特例,如果你使用的是dev-c++的g++編譯器,它使用的是"%i64d"而非"%lld"。
上面**別人的文章~~
我在vs平臺上,較常使用long long~~
__int64在vs上可以使用,而且可以直接cin,cout;
C語言問題,C語言問題C語言問題
選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...
C語言問題,C語言問題
include void main 最後輸出 1 2 2 3 cca 2,b 2,c 4 2.設計一個程式 計算0xaf 01234567,字元 a 的ascii碼值 十進位制 是多少,101 代表的字元是什麼,32678 1的準確結果是多少,1.456e6 35的準確結果是多少,12345 6的準...
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...