chapter-2

C++ Primer第二章娇跟!

#include "stdafx.h"
#include<iostream>

using namespace std;

int main()
{
    bool bl = true;
    char c = 'c';           //與機(jī)器字節(jié)一樣岩齿,大多數(shù)機(jī)器字節(jié)由8比特構(gòu)成。
    wchar_t wc = 'c';
    char16_t c16 = 'c';     //為Unicode字符集服務(wù)苞俘№锷颍可以儲(chǔ)存unicode的字符,而char也只能儲(chǔ)存ANSI字符吃谣!
    char32_t c32 = 'c';     //為Unicode字符集服務(wù)乞封。
    short st = 1;
    int it = 1;
    long lt = 1;
    long long llt = 1;
    float ft = 0.1;         //1字節(jié)表示做裙,7個(gè)有效位。
    double dt = 0.1;        //2字節(jié)表示肃晚,16個(gè)有效位锚贱。
    long double ldt = 0.1;

    //應(yīng)該避免混用帶符號(hào)類型和無符號(hào)類型!在無符號(hào)類型進(jìn)行減法運(yùn)算時(shí)关串,應(yīng)該保證不為負(fù)數(shù)拧廊!
    unsigned char i1 = -1;
    cout << int(i1) << endl;        //unsigned char,賦值-1晋修,所得結(jié)果為255吧碾。10000001原碼-11111110反碼-11111111補(bǔ)碼

    unsigned u2 = 10;
    int i2 = -42;
    cout << i2 + i2 << endl;
    cout << u2 + i2 << endl;            //int值轉(zhuǎn)換為無符號(hào)值,導(dǎo)致異常結(jié)果

    unsigned u3 = 42, u4 = 10;
    cout << u3 - u4 << endl;
    cout << u4 - u3 << endl;            //必須確保無符號(hào)變量不可能為負(fù)值飞蚓,否者會(huì)導(dǎo)致未知錯(cuò)誤滤港,當(dāng)應(yīng)用于循環(huán)時(shí)尤其注意。
    
    //初始化不是賦值趴拧,初始化是創(chuàng)建變量時(shí)賦予一個(gè)初始值,而賦值是把對(duì)象的當(dāng)前值擦除并以一個(gè)新值取代山叮。
    int i3 = 1;
    int i4(1);
    int i5 = { 0 };                     //列表初始化著榴,C11新規(guī)定。列表初始化屁倔,當(dāng)發(fā)生精度損失時(shí)脑又,會(huì)報(bào)告錯(cuò)誤!
    int i6{ 0 };

    double pi = 3.1415926;
    int i7 = pi;
    //int i8{ pi };                     //當(dāng)初始值存在丟失信息時(shí)锐借,使用列表初始化會(huì)報(bào)錯(cuò)问麸!

    //在函數(shù)體內(nèi)部的內(nèi)置類型變量不被默認(rèn)初始化,其變量值是未定義的钞翔;在函數(shù)體之外的變量被初始化為0严卖。所以,顯示初始化變量是非常必要的布轿!
    //每個(gè)類決定其初始化對(duì)象方式哮笆,例如string默認(rèn)初始化為空串。由類的默認(rèn)構(gòu)造函數(shù)決定汰扭!

    //變量的命名規(guī)范:標(biāo)識(shí)符要體現(xiàn)實(shí)際含義稠肘;變量名一般用小寫字母;用戶自定義的類名用大寫字母開頭萝毛;如果標(biāo)識(shí)符由多個(gè)單詞組成项阴,則單詞間應(yīng)有明顯區(qū)分。

    int ival = 1024;
    int &refVal = ival;             //引用笆包,即對(duì)象別名环揽,程序?qū)⒁煤退某跏贾到壎缘础R帽仨毐怀跏蓟?    int *pVal = &ival;              //指針,指針本身就是一種對(duì)象薯演。但是也建議進(jìn)行空指針初始化撞芍!
    cout << refVal << " " << *pVal << endl;

    //空指針,注意不能把int變量直接賦給指針。
    int *p1 = nullptr;//c++推薦方式跨扮!
    int *p2 = 0;
    int *p3 = NULL;

    //void*指針
    void *p4;
    //int *p5 = static_cast<int*>(p4);//強(qiáng)制類型轉(zhuǎn)換序无。

    //指向指針的指針
    int ival2 = 1024;
    int *p_ival2 = &ival2;
    int **pp_ival2 = &p_ival2;
    cout << ival2 << "-" << *p_ival2 << "-" << **pp_ival2 << endl;

    //指針是對(duì)象,所以有引用
    int ival3 = 1024;
    int *pi_ival3 = &ival3;
    int *&r_p_ival3 = pi_ival3;

    //const限定符衡创,指向常量的引用
    const int ival3 = 1314;             //cosnt對(duì)象創(chuàng)建時(shí)必須初始化帝嗡!
    const int ival4 = ival2;            //利用一個(gè)對(duì)象去初始化const對(duì)象。
    //extern const int ival5 = 1024;        //如果想在多個(gè)文件之間共享const對(duì)象璃氢,必須在對(duì)象定義時(shí)加上extern哟玷。
    const int &r_ival3 = ival3;         //cosnt常量引用,引用ival3對(duì)象一也。常量引用綁定非常量對(duì)象巢寡、字面值;非常量引用不允許綁定常量對(duì)象椰苟。

    //指向常量的指針
    const int *p_ival3 = &ival3;        //類似于指向常量的引用抑月。
    //常量指針,即指針對(duì)象地址不能修改。
    int *const pp_ival3 = &ival3;       //指針將一直指向ival3.
    //指向常量的常量指針
    const int *const ppp_ival3 = &ival3;

    //頂層const和底層const
    //頂層const表示(指針)本身是個(gè)常量;底層const表示指針?biāo)傅膶?duì)象是一個(gè)常量渡嚣。
    //const(底層) int *const(頂層) pp_ival3 = &ival3;

    //常量表達(dá)式:值不會(huì)改變并且在編譯過程就能得到計(jì)算結(jié)果。
    const int ival6 = ival3 + 520;
    //將變量聲明為constexpr层皱,便由編譯器來驗(yàn)證變量是否是一個(gè)常量表達(dá)式。
    constexpr int ival7 = 520;      //如果確定變量為常量赠潦,則就把它聲明為constexpr叫胖。
    //算術(shù)類型、應(yīng)用和指針都是字面值類型祭椰,可以被定義為constexpr臭家;而自定義類型string則不能!
    constexpr int *q = nullptr;     //如果constexpr定義指針方淤,將所定義的對(duì)象置為頂層const钉赁。

    //類型別名
    typedef double wages;       //wages是double的同義詞,p是double*的同義詞携茂。
    using uwages = wages;       //C++新的規(guī)定你踩,別名聲明
    typedef wages *p;

    //auto類型說明符,通過初始值來推算變量的類型
    auto ai = 1;
    //auto一般會(huì)忽略掉頂層const,如果希望推斷頂層const带膜,則需要明確指出
    const auto cai = 2;
    //還可以將引用的類型設(shè)為auto吩谦,此時(shí)頂層常量屬性仍然保留
    auto &rai = ai;

    //decltype類型指示符,返回操作數(shù)的數(shù)據(jù)類型,包括頂層const和引用在內(nèi)膝藕。即推斷指針為引用式廷,推斷函數(shù)為函數(shù)類型!
    decltype(ai) dai = 2;
    //特別用法
    int di = 1, *dpi = &di, &dr = di;
    decltype(dr + 0) b;     //返回類型為int
    decltype(*dpi) dc = dr; //返回類型為int&
    decltype((di)) drr = dr;//雙括號(hào)的結(jié)果永遠(yuǎn)是引用

    //自定義數(shù)據(jù)結(jié)構(gòu)
    class Sales_data
    {
        string bookNo;
        unsigned units_sold = 0;            //類內(nèi)初始值芭挽,推薦使用值初始化滑废。
        double revenue = 0.0;
    };

    Sales_data data1, data2;                //類通常被定義在頭文件中,而類所在頭文件的名字應(yīng)與類的名字一樣袜爪。

    //頭文件保護(hù)符,避免頭文件被多次包含蠕趁,從而導(dǎo)致重復(fù)定義
    //  #ifndef SALES_DATA_H
    //  #define SALES_DATA_H
    //  #include<string>
    //  /*聲明和定義*/
    //  #endif

    cin.ignore();

    return 0;
}

//C++定義了算術(shù)類型和空類型,其中算術(shù)類型包括字符辛馆、整數(shù)俺陋、布爾值、浮點(diǎn)數(shù)昙篙。
//帶符號(hào)包含正數(shù)腊状、負(fù)數(shù)、零苔可;不帶符號(hào)包含大于等于0的值寿酌。不帶符號(hào)聲明:unsigned int i=1。
//signed char表示-128~127硕蛹,unsigned char表示0~255,不要聲明char硕并。
//當(dāng)明確知曉數(shù)值不可能為負(fù)時(shí)法焰,選用無符號(hào)類型;如果你的數(shù)值超出int范圍倔毙,選用long long埃仪;在算術(shù)表達(dá)式中不要使用char和bool,只有存放字符和布爾值時(shí)才使用它陕赃;執(zhí)行浮點(diǎn)運(yùn)算選用double卵蛉。
//內(nèi)置類型轉(zhuǎn)換:0為false,否則為true么库;false為0傻丝,true為1;浮點(diǎn)數(shù)到整數(shù)诉儒,僅保留整數(shù)部分葡缰;整數(shù)轉(zhuǎn)浮點(diǎn)型,小數(shù)部分為0,如果整數(shù)所占空間超過浮點(diǎn)型容量泛释,否則精度有可能損失滤愕;給帶符號(hào)類型超范圍值,結(jié)果是未定義的怜校;

第二章介紹了C++基本的數(shù)據(jù)類型(算術(shù)型+引用+指針)及其用法间影,另外也講解了C++對(duì)于復(fù)合類型的支持(類),

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茄茁,一起剝皮案震驚了整個(gè)濱河市魂贬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胰丁,老刑警劉巖随橘,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锦庸,居然都是意外死亡机蔗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門甘萧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萝嘁,“玉大人,你說我怎么就攤上這事扬卷⊙姥裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵怪得,是天一觀的道長(zhǎng)咱枉。 經(jīng)常有香客問我,道長(zhǎng)徒恋,這世上最難降的妖魔是什么蚕断? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮入挣,結(jié)果婚禮上亿乳,老公的妹妹穿的比我還像新娘。我一直安慰自己径筏,他們只是感情好葛假,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滋恬,像睡著了一般聊训。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夷恍,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天魔眨,我揣著相機(jī)與錄音媳维,去河邊找鬼。 笑死遏暴,一個(gè)胖子當(dāng)著我的面吹牛侄刽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朋凉,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼州丹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了杂彭?” 一聲冷哼從身側(cè)響起墓毒,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亲怠,沒想到半個(gè)月后所计,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡团秽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年主胧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片习勤。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踪栋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出图毕,到底是詐尸還是另有隱情夷都,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布予颤,位于F島的核電站囤官,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛤虐。R本人自食惡果不足惜治拿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笆焰。 院中可真熱鬧,春花似錦见坑、人聲如沸嚷掠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽不皆。三九已至,卻和暖如春熊楼,著一層夾襖步出監(jiān)牢的瞬間霹娄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犬耻,地道東北人踩晶。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枕磁,于是被迫代替她去往敵國和親渡蜻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容