基本內(nèi)置對象

c++算術類型

c++的算術類型的大?。╞it)是由具體計算機決定的,但c++標準規(guī)定每個算術類型的最小大小和規(guī)則。
整數(shù)規(guī)則 short <= int <= long <= long long
浮點規(guī)則 float <= double
算術類型的最小大小表格:

類型 含義 最小尺寸(bit)
bool 布爾類型 未定義
char 字符 8
wchar_t 寬字符 16
char16_t unicode字符 16
char32_t unicode字符 32
short 短整型 16
int 整型 16
long 長整型 32
long long 長整型 64
float 單精度浮點數(shù) 6位有效數(shù)字
double 雙精度浮點數(shù) 10位有效數(shù)字

(1)無符號類型變量賦值有符號數(shù),賦值結(jié)果2的類型大小的次方-符號數(shù)的絕對值;
(2)結(jié)合下面程序,可以得出結(jié)論:無論無符號數(shù)之間的運算還是無符號數(shù)和有符號數(shù)進行算術運算時候,如果結(jié)果出現(xiàn)負數(shù),必然導致結(jié)果不正確。在表達式出現(xiàn)無符號數(shù)的情況下,導致不正確的結(jié)果的原因是有符號數(shù)會在自動轉(zhuǎn)化為無符號數(shù)。
tips:只有在確保整個運算過程中不可能出現(xiàn)負數(shù)的情況下,才能使用無符號類型,否則使用有符號類型。

    unsigned a = -1;
    cout << "unsigned大小:" << sizeof(a) << endl;
    cout << a << endl;  //輸出結(jié)果為 4294967295=2的32次方-1
    int i3= -1;
    unsigned u3 = 10;
    cout << i3 + u3 << endl; // 9

    int i4= -11;
    unsigned u4 = 10;
    cout << i4 + u4 << endl; // 4294967295

    unsigned u = 10, u2 = 42;
    cout << u2 - u << endl;  //32
    cout << u - u2 << endl;  //盡管兩個都是無符號類型,但計算結(jié)果仍然是負數(shù),也會
    //自動轉(zhuǎn)換為無符號類型,導致結(jié)果不正確 4294967264
    int i=10,i2 = 42;
    cout << i - i2 << endl;  // -32
    cout << i2 - i << endl;  // 32
    cout << i - u << endl;   // 0
    cout << u - i << endl;   // 0

c++字面值常量

(1)整形字面值:十進制字面類型是能夠容下其數(shù)值的int、long和long long最小尺寸的一個;八進制和十六進制字面值類型是能夠容下其數(shù)值的int、unsigned int 、long、unsigned long 、long long和unsigned long long 最小尺寸的一個;
浮點的字面值類型:double類型(默認)
字符字面值類型:char類型(默認)
字符串字面值類型:char數(shù)組類型(默認)
(2)當然除了默認字面值類型,程序員也可自己指定字面值的類型,具體見表格:字符和字符串的字面值前綴目前只支持L

字符和字符串的字面值前綴

前綴 含義 類型
u unicode16字符 char16_t
U unicode32字符 char32_t
L 寬字符 wchar_t

整型字面值后綴

后綴 最小匹配類型
u或者U unsigned
l或者L long
ll或者LL long long

浮點型字面值后綴

后綴 類型
f或者F float
l或者L long double

變量

c++支持分離式編譯,分離式編譯的好處允許程序分割為多個文件,每個文件單獨編譯;既然分離式有這些好處,c++是如何實現(xiàn)的呢?c++是通過extern關鍵字來變量的聲明和定義分開的,所謂的聲明是讓程序知道它,定義創(chuàng)建與名字關聯(lián)的實體并申請空間。

extern int j;//只聲明j,并為定義(并未申請空間)
int s;//聲明并且定義,但未初始化
extern int k = 10; // 顯示初始化會抵消extern作用,在這樣變量被定義了

注意:變量可以多次聲明,但只能定義一次

c++引用和指針的區(qū)別

(1)引用本質(zhì)上被引用對象的替身,引用不是對象,而指針本身就是對象,因此指針可以賦值和拷貝;
(2)引用必須在定義時候賦初值(要綁定的對象),一旦綁定就不可更改,而指針不用。

c++引用和指針共同點

(1)引用和指針賦初值的時候不能賦字面值;
(2)引用和指針賦初值必須與自己定義的類型要一致。

參考 c++ primer(第五版)第二章

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容