1、變量和基本類型

一、基本內置類型數組

      C++定義了一套包括算術類型(整型、字符、布爾型、浮點型)和空類型在內的基本數據類型。算術類型的尺寸,即所佔比特數,在不一樣機器上有所差異。函數

除了布爾型和擴展的字符型以外,整型劃分爲帶符號的和無符號的unsigned。spa

      當在程序的某處使用了一種算術類型的值而其實所需的是另外一種類型的值時,編譯器會執行類型轉換。當表達式既有帶符號類型又有無符號類型,當帶對象

符號類型取值爲負時會出現異常結果,由於帶符號數會自動地轉換成無符號數。作用域

     一個形如42的值被稱做字面值常量,這樣的值一望而知。都對應一種數據類型。short類型沒有對應的字面值。十進制字面值的類型是int、long、long long字符串

中尺寸最小的那個,是帶符號數。若是使用u、L做後綴,能夠更改字面值的類型。浮點型字面值是double類型。'a'字符char型字面值。"hello"字符串型字面值編譯器

(實際是常量字符構成的數組),編譯器在每一個字符串的結尾處添加一個空字符('\0'),所以,字符串字面值的實際長度要比它的內容多1。若是字符串字面值位置string

緊鄰且僅由空格、縮進和換行符分隔,其實是一個總體,能夠分開書寫。如 std::string str("hello" "world"); 是沒有問題的。it

 

二、變量編譯

     變量提供一個具名的、可供程序操做的存儲空間。有類型,類型決定變量佔用的空間、取值範圍、能參與的運算。首先類型說明符,接着是由一個或多個

變量名組成的列表,變量名以逗號分隔,分號結束。如int a = 0,b;  

     當對象在建立時得到了一個特定值,咱們說這個對象被初始化了。一次定義了兩個或多個變量時,對象的名字隨着定義也就立刻可使用,因此,能夠

用先定義的變量值去初始化後定義的其餘變量。如 int a = 2, b = a * 3; 

     初始化不是賦值,初始化的含義是建立變量時賦予一個初始值,而賦值的含義是把對象的當前值擦除,而以一個新值來替代。

     int units_sold = 0;

     int units_sold = {0};

     int units_sold{0};

     int units_sold(0);

     上面4條語句均可以將int變量初始化爲0,用花括號來初始化變量的形式被稱爲列表初始化,使用列表初始化且初始值存在丟失信息的風險,編譯器將

報錯。如long double ld = 3.1415926536; int a = {ld}; //錯誤。

     若是定義變量時沒有指定初值,則變量被默認初始化,默認值由變量類型決定,同時定義變量的位置也會起做用。內置類型的變量未顯示初始化,它的

值由定義的位置決定,在函數體外的變量被初始化爲0,在函數體內的變量將不被初始化,變量的值是未定義的。類的對象若是沒有顯示初始化,則其值

由類肯定。

     爲了支持分離式變異,C++將聲明和定義區分開來。聲明使得名字爲程序所知,一個文件若是想使用別處定義的名字則必須包含對那個名字的聲明。

定義負責建立與名字關聯的實體。聲明規定了變量類型和名字,定義除此外還申請存儲空間,也可能爲變量賦初始值。想聲明一個變量而非定義,如

聲明i而非定義,extern int  i; 不能顯式初始化變量,不然就變成定義了。

     變量能且只能被定義一次,可是能夠被屢次聲明。若是在多個文件中使用同一變量,變量定義必須出如今且只能出如今一個文件中,其餘的文件必須

對其進行聲明,不能重複定義。

     C++的標識符由字母、數字和下劃線組成,其中必須以字母或下劃線開頭,長度不限,對大小寫敏感。自定義的標識符中不能連續用兩個下劃線,

也不能如下劃線緊連大寫字母開頭,定義在函數體外的標識符不能如下劃線開頭。

     做用域是程序的一部分,在其中名字有其特定的含義。在不一樣的做用域中可能指向不一樣的實體。有效區域詩雨名字的聲明語句,結束於所在做用

域末端。大多數做用域都以{ }分隔。全局做用域、塊做用域。做用域也能夠嵌套,分爲內層做用域和外層做用域。::var,使用做用域操做符來覆蓋默

認的做用域規則。

 

三、複合類型

     複合類型是指基於其餘類型定義的類型。

相關文章
相關標籤/搜索