C C 關於64位整數輸入輸出

2022-05-19 06:33:18 字數 1866 閱讀 1079

兩部分分辨**

第一部分:

第二部分:

第一部分:

型別long long

__int64

intmax_t

格式%lld

%i64d

%i64d

在dev c++中,三種型別均需用%i64d格式輸出 ,c語言中intmax_t需要用到頭檔案stdint.h

c++採用cin輸入時,兩種型別均可。

eg1eg2

eg3

#includeint

main()

#includeint

main()

#include#include

intmain()

eg4eg5

eg6

#include#include

intmain()

#includeusing

namespace

std;

intmain()

#includeusing

namespace

std;

intmain()

第二部分:

在做acm題時,經常都會遇到一些比較大的整數。而常用的內建整數型別常常顯得太小了:其中long 和 int 範圍是[-2^31,2^31),即-2147483648~2147483647。而unsigned範圍是[0,2^32),即 0~4294967295。也就是說,常規的32位整數只能夠處理40億以下的數。

那遇到比40億要大的數怎麼辦呢?這時就要用到c++的64位擴充套件了。不同的編譯器對64位整數的擴充套件有所不同。基於acm的需要,下面僅介紹vc6.0與g++編譯器的擴充套件。

vc的64位整數分別叫做__int64與unsigned __int64,其範圍分別是[-2^63, 2^63)與[0,2^64),即-9223372036854775808~9223372036854775807與 0~18446744073709551615(約1800億億)。對64位整數的運算與32位整數基本相同,都支援四則運算與位運算等。當進行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」的錯誤。cout,cin對於__int64無能為力,寫法較複雜,不過也經常不用。那是不是就不能進行輸入輸出呢?當然不是,你可以使用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《使用無符號數時,將"%lld"改成"%llu"即可。

C C 輸入 輸出

在c語言中,我們的輸入輸出靠的是標準庫函式,最常用的就是 scanf 和 printf 這一對了。那麼c 又是怎麼樣實現輸入輸出的呢?下面來寫c 的第乙個程式!include using namespace std int main 不難看出,它有以下特徵 1.使用cout標準輸出 控制台 和cin...

C C 輸入輸出

符號 描述 h0 short型的八進位制 0int型的八進位制 l0long型的八進位制 hdshort型的十進位制 dint型的十進位制 ldlong型的十進位制 hx,hx short型的十六進製制,x表示小寫,x表示大寫 x,x int型的十六進製制,x表示小寫,x表示大寫 lx,lx lon...

C C 輸入輸出

使用printf 函式和scanf 函式,要宣告標頭檔案 include 1.printf 函式 形式 printf 格式控制字串 輸出表列 功能 通過標準輸出裝置 如顯示器 輸出一組資料,輸出形式由 格式控制 字串規定。例如 printf 4d,4d a,b 2.scanf 函式 功能 從終端輸入...