c++定義了一套包括算術型別和空型別在內的基本資料型別。
其中算術型別包含了字元,整型數,布林值和浮點數。空型別不對應具體的值(具體應用不知)
內建型別的機器實現
計算機以位元序列儲存資料,每個位元非0即1。
736424 ----------0 0 1 1 1 0 1 1
736425 ----------0 0 0 1 1 0 1 1
736426 ----------0 1 1 1 0 0 0 1
736427 ----------0 1 1 0 0 1 0 0
位址 8位元內容
為了賦予記憶體中某個位址明確的含義,必須首先知道儲存在該位址的資料的型別。型別決定了資料所佔的位元數以及該如何解釋這些位元內容。
同樣的位元序列不同的資料型別表示不同的值!
如何選擇型別?
為了使程式更準確,更快執行遵循以下準則:
當明確知曉數值不可能為負的時,選用無符號型別。
使用 int 執行整數運算。在實際應用中, short 常常顯得太小, long 一般和 int 有一樣的尺寸。如果數值超過了 int 的表示範圍,選用 long long。
在算術表示式 中不要使用 char 或 bool,只有在存放字元或布林值時才使用它們。因為型別 char 在一些機器上是有符號的,而在另一些機器上又是無符號的,
所以如果使用 char 進行運算特別容易出問題。如果你需要使用乙個不大的證書,那麼明確指定它的型別是 signed char 或者 unsigned char。
執行浮點數運算選用 double ,這是因為 float 通常精度不夠而且雙精度浮點數甚至比單精度還快。
long double 提供的精度一般情況下是沒有必要的,況且它帶來的執行是消耗也不容忽視。
變數的初始化:
變數在第一次使用的時候再定義它。
在c++語言中,初始化和賦值是兩個完全不同的操作。
初始化的含義是建立變數時賦予其乙個初始值,而賦值的含義是吧物件的當前值擦除,而以乙個新值來替代。
int units_sold = 0;
int units_sold = ;
int units_sold; //c++11 standard 列表初始化
int units_sold(0);
ps:
當用於內建型別的變數時,這種初始化形式有乙個重要的特點:如果我們使用列表初始化且初始值存在丟失資訊的風險,則編譯器會報錯:
long double ld = 3.1415926536;
int a, b = ; //錯誤:轉換未執行,因為存在丟失資訊的危險
int c(ld), d =ld; //正確l轉換執行,且確實丟失了部分值
預設初始化:、
如果是內建型別的變數未被顯式初始化,它的值由定義的位置決定。定義於任何函式體之外的變數被初始化為0。
變數與基本型別
變數就是記憶體中開闢的一塊儲存空間 當需要使用乙個變數時,必須對該變數進行初始化存資料,取資料,運算元據,存資料型別名稱 位元組空間 使用場景 byte 1位元組 8位 儲存位元組資料 較常用 short 2位元組 16位 相容性考慮 很少用 int4位元組 32位 儲存普通整數 常用 long 8...
c primer之變數與基本型別
如果表示式裡既有帶符號型別又有無符號型別,當帶符號型別取值為負時會出現異常結果。因為帶符號數會自動轉換成無符號數。unsigned u 10 int i 42 std cout endl 輸出 84 std cout endl 如果int佔32位,輸出4294967264引用與指標 引用並非物件,引...
變數和基本型別
算術型別 arithmetic type c 標準規定了每個算術型別的最小儲存空間,但允許編譯器使用更大的儲存空間。事實上,對於int型,幾乎現在所有的編譯器使用的儲存空間都比所要求的大 也表明,在編寫程式時不能對這些型別的大小做任何假設 c 算術型別最小儲存空間規定如下 注 要特別注意int型,並...