天天看點

《深入了解C++11:C++ 11新特性解析與應用》——2.2 long long整型

類别:部分人

相比于c++98标準,c++11整型的最大改變就是多了long long。但事實上,long long整型本來就離c++标準很近,早在1995年,long long就被提議寫入c++98标準,卻被c++标準委員會拒絕了。而後來,long long類型卻進入了c99标準,而且也事實上也被很多編譯器支援。于是輾轉地,c++标準委員會又掉頭決定将long long納入c++11标準。

long long整型有兩種:long long和unsigned long long。在c++11中,标準要求long long整型可以在不同平台上有不同的長度,但至少有64位。我們在寫常數字面量時,可以使用ll字尾(或是ll)辨別一個long long類型的字面量,而ull(或ull、ull、ull)表示一個unsigned long long類型的字面量。比如:

就定義了一個有符号的long long變量lli和無符号的unsigned long long變量ulli。事實上,在c++11中,還有很多與long long等價的類型。比如對于有符号的,下面的類型是等價的:long long、signed long long、long long int、signed long long int;而unsigned long long和unsigned long long int也是等價的。

同其他的整型一樣,要了解平台上long long大小的方法就是檢視(或中的宏)。與long long整型相關的一共有3個:llong_min、llong_max和ullong_min,它們分别代表了平台上最小的long long值、最大的long long值,以及最大的unsigned long long值。可以看看下面這個例子,如代碼清單2-5所示。

《深入了解C++11:C++ 11新特性解析與應用》——2.2 long long整型

在代碼清單2-5中,将以上3個宏列印了出來,對于printf函數來說,輸出有符号的long long類型變量可以用符号%lld,而無符号的unsigned long long則可以采用%llu。18446744073709551615用16進制表示是0xffffffffffffffff(16個f),可知在我們的實驗機上,long long是一個64位的類型。

繼續閱讀