變量和基本類(lèi)型

基本內(nèi)置類(lèi)型

算術(shù)類(lèi)型

分兩類(lèi):整型浮點(diǎn)型

類(lèi)型 含義 最小尺寸
bool 布爾類(lèi)型 未定義
char 字符 8位
wchar_t 寬字符 16位
char16_t Unicode字符 16位
char32_t Unicode字符 32位
short 短整型 16位
int 整型 16位
long 長(zhǎng)整型 32位
long long 長(zhǎng)整型 32位
float 單精度浮點(diǎn)數(shù) 6位有效數(shù)字
double 雙精度浮點(diǎn)數(shù) 10位有效數(shù)字
long double 擴(kuò)展精度浮點(diǎn)數(shù) 10位有效數(shù)字
帶符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型

除去布爾型和擴(kuò)展的字符之外晤斩,其他整型可以劃分為帶符號(hào)的(signed)和無(wú)符號(hào)的(unsigned)兩種信殊。帶符號(hào)類(lèi)型可以表示正數(shù)屉凯、負(fù)數(shù)或0,無(wú)符號(hào)類(lèi)型則僅能表示大于等于0的值艾帐。
類(lèi)型int誓沸、short、long和long long都是帶符號(hào)的茸炒,通過(guò)在這些類(lèi)型名前添加unsigned就可以得到無(wú)符號(hào)類(lèi)型。
與其他整型不同阵苇,字符型被分為了三種:char壁公、signed char和unsigned char。特別需要注意的是:類(lèi)型char和類(lèi)型signed char并不一樣绅项。盡管字符型有三種紊册,但是字符的表現(xiàn)形式卻只有兩種:帶符號(hào)的和無(wú)符號(hào)的。

如何選擇類(lèi)型

  • 當(dāng)明確知曉數(shù)值不可能為負(fù)時(shí)快耿,選用無(wú)符號(hào)類(lèi)型囊陡。
  • 使用int執(zhí)行正數(shù)運(yùn)算芳绩。在實(shí)際應(yīng)用中,short常常顯得太小而long一般和int有一樣的尺寸撞反。如果你的數(shù)值超過(guò)了int的表示范圍妥色,選用long long。
  • 在算術(shù)表達(dá)式中不要使用char或bool遏片,只有在存放字符或布爾值時(shí)才使用它們垛膝。因?yàn)轭?lèi)型char在一些機(jī)器上是有符號(hào)的,而在另一些機(jī)器上又是無(wú)符號(hào)的丁稀,所以如果使用char進(jìn)行運(yùn)算特別容易出問(wèn)題。如果你需要使用一個(gè)不大的整數(shù)倚聚,那么明確指定它的類(lèi)型是signed char或者unsigned char线衫。
  • 執(zhí)行浮點(diǎn)數(shù)運(yùn)算選用double,這是因?yàn)閒loat通常精度不夠而且雙精度浮點(diǎn)數(shù)和單精度浮點(diǎn)數(shù)的計(jì)算代價(jià)相差無(wú)幾惑折。事實(shí)上授账,對(duì)于某些機(jī)器來(lái)說(shuō),雙精度運(yùn)算甚至比單精度還快惨驶。long double提供的精度在一般情況下是沒(méi)有必要的白热,況且它帶來(lái)的運(yùn)行消耗也不容忽視。
類(lèi)型轉(zhuǎn)換
bool b = 42;                // b為真
int i = b;                  // i的值為1
i = 3.14;                   // i的值為3
double pi = i;              // pi的值為3.0
unsigned char c = -1;       // 假設(shè)char占8bit粗卜,c的值為255
/* 當(dāng)我們賦給無(wú)符號(hào)類(lèi)型一個(gè)超出它表示范圍的值時(shí)屋确,結(jié)果是初始值對(duì)無(wú)符號(hào)類(lèi)型表示數(shù)值總數(shù)取模后的余數(shù)。 */
signed char c2 = 256;       // 假設(shè)char占8bit续扔,c2的值是未定義的   
/* 當(dāng)我們賦給帶符號(hào)類(lèi)型一個(gè)超出它表示范圍的值時(shí)攻臀,結(jié)果是未定義的(undefined)。 */

避免無(wú)法預(yù)知和依賴(lài)于實(shí)現(xiàn)環(huán)境的行為

含有無(wú)符號(hào)類(lèi)型的表達(dá)式

把負(fù)數(shù)轉(zhuǎn)換成無(wú)符號(hào)數(shù)類(lèi)似于直接給無(wú)符號(hào)數(shù)賦一個(gè)負(fù)值纱昧。

切勿混用帶符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型
初始化不是賦值刨啸,初始化的含義是創(chuàng)建變量時(shí)賦予其一個(gè)初始值,而賦值的含義是把對(duì)象的當(dāng)前值擦除识脆,而以一個(gè)新值來(lái)替代设联。

列表初始化:
int units_sold = 0;
int units_sold = {0};
int units_sold(0);
int units_sold{0};

如果我們使用列表初始化且初始值存在丟失信息的風(fēng)險(xiǎn),則編譯器將報(bào)錯(cuò)

long double ld = 3.1415926536;
int a{ld}, b = {ld};    // 錯(cuò)誤:轉(zhuǎn)換未執(zhí)行灼捂,因?yàn)榇嬖趤G失信息的危險(xiǎn)
int c(ld), d = ld;      // 正確:轉(zhuǎn)換執(zhí)行离例,且確實(shí)丟失了部分值
默認(rèn)初始化

如果是內(nèi)置類(lèi)型的變量未被顯示初始化,它的值由定義的位置決定纵东。定義于任何函數(shù)體之外的變量被初始化為0粘招。定義在函數(shù)體內(nèi)部的內(nèi)置類(lèi)型變量將不被初始化(uninitialized)。一個(gè)未被初始化的內(nèi)置類(lèi)型變量的值是未定義的偎球,如果試圖拷貝或以其他形式訪問(wèn)此類(lèi)值將引發(fā)錯(cuò)誤洒扎。

定義于函數(shù)體內(nèi)的內(nèi)置類(lèi)型的對(duì)象如果沒(méi)有初始化辑甜,則其值未定義。類(lèi)的對(duì)象如果沒(méi)有顯式地初始化袍冷,則其值由類(lèi)確定磷醋。

建議初始化每一個(gè)內(nèi)置類(lèi)型的變量。雖然并非必須這么做胡诗,但如果我們不能確保初始化后程序安全邓线,那么這么做不失為一種簡(jiǎn)單可靠的方法。

變量聲明和定義

如果想聲明一個(gè)變量而非定義它煌恢,就在變量名前添加關(guān)鍵字extern骇陈,而且不要顯式地初始化變量:

extern int i;      // 聲明i而非定義i
int j;             // 聲明并定義j
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瑰抵,隨后出現(xiàn)的幾起案子你雌,更是在濱河造成了極大的恐慌,老刑警劉巖二汛,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婿崭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肴颊,警方通過(guò)查閱死者的電腦和手機(jī)氓栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)婿着,“玉大人授瘦,你說(shuō)我怎么就攤上這事【顾危” “怎么了奥务?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)袜硫。 經(jīng)常有香客問(wèn)我氯葬,道長(zhǎng),這世上最難降的妖魔是什么婉陷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任帚称,我火速辦了婚禮,結(jié)果婚禮上秽澳,老公的妹妹穿的比我還像新娘闯睹。我一直安慰自己,他們只是感情好担神,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布楼吃。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孩锡。 梳的紋絲不亂的頭發(fā)上酷宵,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音躬窜,去河邊找鬼浇垦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荣挨,可吹牛的內(nèi)容都是我干的男韧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼默垄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼此虑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起口锭,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寡壮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后讹弯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡这溅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年组民,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悲靴。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡臭胜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出癞尚,到底是詐尸還是另有隱情耸三,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布浇揩,位于F島的核電站仪壮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胳徽。R本人自食惡果不足惜积锅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望养盗。 院中可真熱鬧缚陷,春花似錦、人聲如沸往核。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至虎锚,卻和暖如春硫痰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翁都。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工碍论, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柄慰。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓鳍悠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坐搔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藏研,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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