真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++的內(nèi)置基本類型和初始化-創(chuàng)新互聯(lián)

數(shù)據(jù)類型是程序的基礎(chǔ):它告訴我們數(shù)據(jù)的意義以及我們能在數(shù)據(jù)上執(zhí)行的操作。

創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):成都服務(wù)器托管,成都服務(wù)器租用,成都服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。

 C++的內(nèi)置數(shù)據(jù)類型分為兩組:基本類型和復(fù)合類型。如下所示:

C++的內(nèi)置基本類型和初始化

 bool類型的字面值為true和false:

  bool test = false;

 字面值true和false都可以通過提升轉(zhuǎn)換為int類型,true被轉(zhuǎn)換為1,而false被轉(zhuǎn)換為0:

  int ans = true;  // ans assigned 1
  int promise = false;  // promise assigned 0

整型short、int、long和long long

 C++的short、int、long和long long類型通過使用不同數(shù)目的位(bit)來存儲(chǔ)值,最多能夠表示4種不同的整數(shù)寬度。如果在所有的系統(tǒng)中,每種類型的寬度都相同,則使用起來將非常方便。例如,如果short總是16位,int總是32位,等等。不過生活并非那么簡單,沒有一種選擇能夠滿足所有的計(jì)算機(jī)設(shè)計(jì)要求。C++提供了一種靈活的標(biāo)準(zhǔn),它確保了最小長度(從C語言借鑒而來),如下所示:

  •  short至少16位;

  •  int至少與short一樣長;

  •  long至少32位,且至少與int一樣長;

  •  long long至少64位,且至少與long一樣長。

 C++提供了大量的整型,應(yīng)使用哪種類型呢?通常,int被設(shè)置為對目標(biāo)計(jì)算機(jī)而言最為“自然”的長度。自然長度(natural size)指的是計(jì)算機(jī)處理起來效率最高的長度。如果沒有非常有說服力的理由來選擇其他類型,則應(yīng)使用int。

初始化

 初始化將賦值與聲明合并在一起??梢允褂米置嬷党A縼沓跏蓟?;也可以將變量初始化為另一個(gè)變量,條件是后者已經(jīng)定義過;甚至可以使用表達(dá)式來初始化變量,條件是當(dāng)程序執(zhí)行到該聲明時(shí),表達(dá)式中所有的值都是已知的。如下:

  int uncles = 5;  // initialize uncles to 5
  int aunts = uncles;  // initialize aunts to 5
  int chairs = aunts + uncles + 4;  // initialize chairs to 14

 如果將uncles的聲明移到語句列表的最后,則另外兩條初始化語句將非法,因?yàn)檫@樣當(dāng)程序試圖對其他變量進(jìn)行初始化時(shí),uncles的值是未知的。

 前面的初始化語法來自C語言,C++還有另一種C語言沒有的初始化語法:

  int owls = 101;  // traditional C initialization, sets owls to 101
  int wrens(432);  // alternative C++ syntax,set wrens to 432

 警告:如果不對函數(shù)內(nèi)部定義的變量進(jìn)行初始化,該變量的值將是不確定的。這意味著該變量的值將是它被創(chuàng)建之前,相應(yīng)內(nèi)存單元保存的值。

 如果知道變量的初始值應(yīng)該是什么,則應(yīng)對它進(jìn)行初始化。

C++11的初始化方式

 還有一種初始化方式,這種方式用于數(shù)組和結(jié)構(gòu),但在C++98中,也可用于單值變量:

  int hamburgers = {24};  // set hamburgers to 24

 將大括號初始化器用于單值變量的情形還不多,但C++11標(biāo)準(zhǔn)使得這種情形更多了。首先,采用這種方式時(shí),可以使用等號(=),也可以不使用:

  int emus{7};  // set emus to 7
  int rheas = {12};  // set rheas to 12

 其次,大括號內(nèi)可以不包含任何東西。在這種情況下,變量將被初始化為零:

  int rocs = {};  // set rocs to 0
  int psychics{};  // set psychics to 0

 第三,這有助于更好地防范類型轉(zhuǎn)換錯(cuò)誤。關(guān)于這個(gè)主題有如下說明:

 C++將使用大括號的初始化稱為列表初始化(list-initialization),因?yàn)檫@種初始化常用于給復(fù)雜的數(shù)據(jù)類型提供值列表。與其他初始化方式相比,列表初始化對類型的要求更嚴(yán)格。具體地說,列表初始化不允許縮窄(narrowing),即變量的類型可能無法表示賦給它的值。例如,不允許將浮點(diǎn)型轉(zhuǎn)換為整型。在不同的整型之間轉(zhuǎn)換或?qū)⒄娃D(zhuǎn)換為浮點(diǎn)型可能被允許,條件是編譯器知道目標(biāo)變量能夠正確地存儲(chǔ)賦給它的值。例如,可將long變量初始化為int值,因?yàn)閘ong總是至少與int一樣長;相反方向的轉(zhuǎn)換也可能被允許,只要int變量能夠存儲(chǔ)賦給它的long常量:

  const int code = 66;
  int x = 66;
  char c1 {31325};  // narrowing, not allowed
  char c2 = {66};  // allowed because char can hold 66
  char c3 {code};  // ditto(同上)
  char c4 = {x};  // not allowed, x is not constant
  x = 31325;
  char c5 = x;  // allowed by this form of initialization

 在上述代碼中,初始化c4時(shí),您知道x的值為66,但在編譯器看來,x是一個(gè)變量,其值可能很大。編譯器不會(huì)跟蹤下述階段可能發(fā)生的情況:從x被初始化到它被用來初始化c4。

為什么需要更多的初始化方法?

 為何需要更多的初始化方法?有充分的理由嗎?原因是讓新手更容易學(xué)習(xí)C++,這可能有些奇怪。以前,C++使用不同的方式來初始化不同的類型:初始化類變量的方式不同于初始化常規(guī)結(jié)構(gòu)的方式,而初始化常規(guī)結(jié)構(gòu)的方式又不同于初始化簡單變量的方式;通過使用C++新增的大括號初始化器,初始化常規(guī)變量的方式與初始化類變量的方式更像。C++11使得可將大括號初始化器用于任何類型(可以使用等號,也可以不使用),這是一種通用的初始化語法。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標(biāo)題:C++的內(nèi)置基本類型和初始化-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/gidje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部