變數與基本型別

2021-06-29 05:46:43 字數 1483 閱讀 6497

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型,並...