亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ Primer 第2章 變量和基本類型

2019-11-08 01:40:59
字體:
來源:轉載
供稿:網友

C++ PRimer 第2章 變量和基本類型

C Primer 第2章 變量和基本類型1 基本內置類型算數類型類型轉換字面值常量2 變量變量定義3 復合類型引用d左引用指針d4 const限定符指針和constconstexpr和常量表達式5 處理類型類型別名auto類型說明符decltype類型指示符6 自定義數據結構

2.1 基本內置類型

算數類型

bool的最小尺寸未定義 char16_t和char32_t的最小 尺寸分別為16位和32位,含義是Unicode字符,short和int都是16位(-32768~32768),long是32位(-21E~21E),long long是64位。 float是6位有效數字,double是10位有效數字,long double是10位有效數字。

以下是選擇類型的一些經驗準則:

當明確知曉數值不可能位負時,選用無符號類型。

使用int執行整數運算。在實際應用中,short常常顯得太小而long一般和int有一樣的尺寸。如果數值超過int的表示范圍,選用long long。

在算術表達式中不要使用char或bool,因為類型char在一些機器上是有符號的,一些是沒符號的。如果需要使用一個不大的整數,那么明確指定是signed char(-128~127)或者unsigned char(0~255)

執行浮點數運算選用double,這是因為float通常精度不夠,而且double和float的計算代價相差無幾。對于某些機器來說,甚至double比float更快。long double在一般情況下是沒有必要的,況且它帶來運行時的消耗也不容忽視。

類型轉換

當賦值給無符號類型一個超出它表示范圍的值時,結果是初始值對無符號類型表示數值總數取模后的余數。例如復制給8比特大小的unsigned char可表示0~255區間內的值,如果賦值了一個區間意外的值,則實際結果是對該值對256取模后所得的余數。因此,把-1賦給8比特大小的unsigned char 所得結果是255。當我們賦值給帶符號類型一個超出它表示范圍的值時,結果是未定義的(undefined)。當一個算術表達式中既有無符號數又有int值時,那個int值就會轉換成無符號數。(先轉換再計算)

字面值常量

十進制字面值的類型是int、long和long long中尺寸最小的那個。 八進制和十六進制字面值的類型是int、unsigned int、long、unsigned long、long long和unsigned long long中的尺寸最小者。 如果一個字面值連與之關聯的最大的數據類型都放不下,將產生錯誤。類型short沒有對應的字面值。 盡管整型字面值可以存儲在帶符號數據類型中,但嚴格來說,十進制字面值不會是負數,負號并不在字面值之內,它的作用僅僅是對字面值取負數而已。

單引號括起來的一個字符稱為char型字面值,雙引號括起來的零個或多個字符則構成字符串型字面值,編譯器會在每個字符串的結尾處添加一個空字符’/0’,因此,字符串字面值的實際長度比內容多1。

泛化的轉義序列:/x后緊跟1個或多個十六進制數字,或者/后緊跟1個、2個或3個八進制數字,其中數字部分表示的是字符對應的數值。 注意:如果反斜線/后面跟著的八進制數字超過3個,只有前三個數字與/構成轉義序列。相反,/x要用到后面跟著的所有數字。


2.2 變量

變量定義

WARNING:初始化不是賦值,初始化的含義是創建變量時賦予其一個初始值,而賦值的含義是把對象的當前值擦除,而以一個新值來替代。 C++11:可用{ }來初始化變量 如果想聲明一個變量而非定義它,就在變量名前添加關鍵字extern,而且不要顯示的初始化變量。任何包含了顯示初始化的聲明即稱為定義。會抵消extern的作用。

extern int i; //聲明i而非定義iint j; //聲明并定義j

變量能且只能被定義一次,但是可以被申請多次。


2.3 復合類型

引用&d(左引用)

引用并非對象,它只是為一個已經存在的對象所起的另外一個名字。引用只能綁定在對象上,而不能與字面值或某個表達式的計算結果綁定在一起。

指針*d

指針本身就是一個對象,允許對指針賦值和拷貝,而且在指針的生命周期內它可以先后指向幾個不同的對象。指針無需在定義時賦值。int ival = 42;int *p = &ival; //p存放變量ival的地址,或者說p是指向變量ival的指針。

因為引用不是對象,沒有實際地址,所以不能定義指向引用的指針。 如果指針指向了一個對象,則允許使用解引用符*來訪問對象。 C++11:得到空指針最直接的辦法就是用字面值nullptr來初始化指針,它可以被轉換成任意其他的指針類型。 void* 指針是一種特殊的指針類型,可用于存放任意對象的地址。不能直接操作void*指針所指的對象,因為我們并不知道這個對象到底是什么類型,也就無法確定能在這個對象上做哪些操作。


2.4 const限定符

如果想在多個文件之間共享const對象,必須在變量的定義之前添加extern關鍵字。 常量引用是對const的引用,引用的對象是常量還是非常量可以決定其能所參與的操作,卻無論如何都不會影響到引用和對象的綁定關系本身。 常量引用僅對引用可參與的操作做出了限定,對于引用的對象本身是不是一個常量未作限定。因為對象也可能是個非常量,所以允許通過其他途徑改變它的值:

int i = 42;int &r1 = i; //引用ri綁定對象iconst int &r2 = i; //r2也綁定對象i,但是不允許通過r2修改i的值r1 = 0; //r1并非常量,i的值修改為0r2 = 0; //錯誤:r2是一個常量引用

指針和const

指向常量的指針不能用于改變其所指對象的值,要想存放常量對象的地址,只能使用指向常量的指針:

const double pi = 3.14;const double *cptr = π

兩個例外: - 允許令一個指向常量的指針指向一個非常量對象:

double dval = 3.14;cptr = &dval; //正確:但是不能通過cptr改變dval的值

所謂指向常量的指針僅僅要求不能通過該指針改變對象的值,而沒有規定那個對象的值不能通過其他途徑改變。 指針本身是一個常量并不意味著不能通過指針修改其所指對象的值,能否這樣做完全依賴于所指對象的類型。 把*放在const關鍵字之前用以說明指針是一個常量,即不變的是指針本身的值而非指向的那個值。 想讓指針指向常量,就必須在前面加const,想讓指針是常量,就得把*放到const前面

constexpr和常量表達式

常量表達式是指不會改變并且在編譯過程就能得到計算結果的表達式。 C++11允許將變量聲明位constexpr類型以便由編譯器來驗證變量的值是否是一個常量表達式。

一般來說,如果你認定變量是一個常量表達式,那么就吧它聲明成constexpr類型。

自定義類、IO庫、string類型都不是字面值類型,不能被定義成constexpr,一個constexpr指針的初始值必須是nullptr或者0,或者是存儲于某個固定地址中的對象。

*在constexpr聲明中如果定義了一個指針,限定符constexpr僅對指針有效,與指針所指的對象無關:

const int *p = nullptr; //p是一個指向整型常量的指針constexpr int *q = nullptr; //q是一個指向整數的常量指針

2.5 處理類型

類型別名

typedef double wages;using SI = Sales_item;

auto類型說明符

它能讓編譯器去分析表達式的類型從而確定變量的類型,一條聲明語句只能由一個基本數據類型。 auto一般會忽略掉頂層const,同時底層const則會保留下來。

decltype類型指示符

它的作用是選擇 并返回操作數的數據類型,不實際計算表達式的值: decltype (f()) sum = x; 編譯器并不實際調用函數f,而是使用當調用發生時f的返回值類型作為sum的類型。

如果給變量加上了一層或多層括號,編譯器就會把它當成是一個表達式。變量是一種可以作為賦值語句左值的特殊表達式,賦值是會產生引用的一類典型表達式,引用的類型就是左值的類型,所以這樣的decltype就會得到引用類型,而非變量的類型。

2.6 自定義數據結構

預處理命令:在編譯前執行的一段程序,可以部分地改變我們所寫的程序。 頭文件保護符 #ifdef當且僅當變量已定義時為真 #ifndef當且僅當變量未定義時位真 一旦檢測結果位真,則執行后續操作直至遇到#endif為止。

#ifndef SALES_DATA_H#define SALES_DATA_H#include <string> ...#endif
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97免费中文视频在线观看| 欧美孕妇孕交黑巨大网站| 宅男66日本亚洲欧美视频| 亚洲欧美日本另类| 一区二区三区视频免费在线观看| 日韩av在线播放资源| 亚洲国模精品一区| 91豆花精品一区| 国产精品久久久久久久一区探花| 日韩高清av一区二区三区| 一色桃子一区二区| 91超碰caoporn97人人| 精品露脸国产偷人在视频| 亚洲精品av在线播放| 欧美日韩国产在线| 91在线|亚洲| 国产精品美女久久久久av超清| 最近2019中文字幕第三页视频| 欧美老肥婆性猛交视频| 中文字幕九色91在线| 中文字幕日韩免费视频| 亚洲精品456在线播放狼人| 欧美一区二区三区四区在线| 亚洲美女在线观看| 日韩久久午夜影院| 亚洲国产成人爱av在线播放| 久久亚洲欧美日韩精品专区| 久久久久久久av| 国产综合在线看| 亚洲天堂av在线免费观看| 理论片在线不卡免费观看| 亚洲欧洲第一视频| 国产精品一久久香蕉国产线看观看| 国产久一一精品| 精品久久久久久久久久久久久久| 国模精品视频一区二区三区| 精品久久久精品| 亚洲成av人乱码色午夜| 国产精品盗摄久久久| 97香蕉超级碰碰久久免费的优势| 成人av.网址在线网站| 欧美性20hd另类| 国产精品久久久久一区二区| 亚洲美女av黄| 色哟哟网站入口亚洲精品| 亚洲欧美日韩精品久久亚洲区| 国产精品网站入口| 91网站在线免费观看| 欧美在线影院在线视频| 日韩一区二区欧美| 国产色婷婷国产综合在线理论片a| 亚洲成人精品久久| 自拍偷拍亚洲欧美| 日韩高清人体午夜| 日韩美女av在线免费观看| 国产日韩av在线| 国产v综合ⅴ日韩v欧美大片| 日韩电影大全免费观看2023年上| 国产综合在线观看视频| 成人免费看吃奶视频网站| 久久九九全国免费精品观看| 成人免费网站在线| 美女999久久久精品视频| 欧美国产亚洲精品久久久8v| 日韩在线免费观看视频| 色爱av美腿丝袜综合粉嫩av| 国产视频综合在线| 亚洲人午夜精品免费| 日韩激情av在线播放| 国模视频一区二区| 亚洲专区国产精品| 欧美一区二区三区四区在线| 久久人人爽人人爽人人片亚洲| 国产香蕉精品视频一区二区三区| 国产91对白在线播放| 91亚洲精品视频| 欧美小视频在线| 亚洲精品女av网站| 久久久精品网站| 久久精品91久久久久久再现| 日韩免费高清在线观看| 国产日韩欧美日韩| 日本伊人精品一区二区三区介绍| 成人黄色影片在线| 国产日韩欧美日韩大片| 国产精品91在线| 亚洲精品久久久久久久久久久久| 亚洲欧美成人网| 亚洲精品按摩视频| 欧美日本黄视频| 69久久夜色精品国产69乱青草| 日韩中文字幕免费看| 亚洲国产精品推荐| 国产亚洲欧洲高清| 国产精品高潮呻吟久久av黑人| 亚洲国产精品久久久| 91精品在线影院| 国产日韩精品在线观看| 超碰97人人做人人爱少妇| 亚洲级视频在线观看免费1级| 中文在线不卡视频| 97国产精品人人爽人人做| 少妇av一区二区三区| 亚洲欧美精品一区二区| 一区二区三区美女xx视频| 久久色精品视频| 91精品国产高清久久久久久| 亚洲午夜精品久久久久久久久久久久| 国产精品美腿一区在线看| 狠狠躁夜夜躁人人躁婷婷91| 久久久久久久电影一区| www.日韩不卡电影av| 8090理伦午夜在线电影| 日韩欧美精品免费在线| 国产成人精品亚洲精品| 国产精品永久免费观看| 国产女人18毛片水18精品| 在线视频亚洲欧美| 色婷婷av一区二区三区在线观看| 一本色道久久88综合日韩精品| 欧美日韩国产va另类| 欧美夫妻性生活xx| 欧美与欧洲交xxxx免费观看| 久久精品成人一区二区三区| 国外成人性视频| 欧美午夜激情在线| 国产一区玩具在线观看| 国产精品夜间视频香蕉| 国产自摸综合网| 久久久久久久久久久久久久久久久久av| 亚洲理论在线a中文字幕| 欧美激情精品久久久久久蜜臀| 欧美性猛交xxxx乱大交极品| 亚洲精品aⅴ中文字幕乱码| 欧美贵妇videos办公室| 国产成人精品av| 久久欧美在线电影| 91香蕉国产在线观看| 伊人久久大香线蕉av一区二区| 国产精品午夜国产小视频| 国产在线日韩在线| 欧美日韩一区二区三区在线免费观看| 欧美高清无遮挡| 欧美精品videosex极品1| www欧美日韩| 国产精品av电影| 欧美日韩国产综合视频在线观看中文| 国产精品直播网红| 欧美精品生活片| 欧美视频国产精品| 久久久精品视频在线观看| 日韩国产欧美精品在线| 日韩在线视频观看正片免费网站| 久久久久国产一区二区三区| 国产一区二区三区在线视频| 国产精品偷伦视频免费观看国产| 国外成人在线直播| 综合网日日天干夜夜久久| 欧美国产第一页| 国产一区欧美二区三区| 久久99精品久久久久久琪琪| 久久久久久有精品国产| 国产欧美日韩亚洲精品| 久久久久久91香蕉国产|