數據類型相關內容與強制類型轉換

數據類型相關內容與強制類型轉換

一個數字數據類型可以容納的數字大於另一個數據類型,從上到下排序:

       可以稱越處於上方的,排名越高

 

在數學表達式中數據類型的自動轉換規則:

規則 1:

char、short 和 unsigned short 值自動升級爲 int 值。細心的讀者可能已經注意到,char、short 和 unsigned short 都未出現在表 1 中,這是因爲無論何時在數學表達式中使用這些數據類型的值,它們都將自動升級爲 int 類型。

規則 2:

當運算符使用不同數據類型的兩個值時,較低排名的值將被升級爲較高排名值的類型。在下面的表達式中,假設 years 是一個 int 變量,而 interestRate 是一個 double 變量:需要進行運算years * interestRate時,在乘法發生之前,years 中的值將升級爲 double 類型。

 

規則 3:

當表達式的最終值分配給變量時,它將被轉換爲該變量的數據類型。在下面的語句中,假設 area 是一個 long int 長整型變量,而 length 和 width 都是 int 整型變量:

area = length * width;

因爲存儲在 length 和 width 中的值是相同的數據類型,所以它們都不會被轉換爲任何其他數據類型。但是,乘法的結果將被升級爲 long int 類型,這樣纔可以存儲到 area 中。

 

 

如果接收值的變量的數據類型低於接收的值,那該怎麼辦呢?在這種情況下,值將被降級爲變量的類型。如果變量的數據類型沒有足夠的存儲空間來保存該值,則該值的一部分將丟失,並且該變量可能會收到不準確的結果。

我們知道,如果接收值的變量想要的是一個整數,而賦給它的值是一個浮點數,那麼當轉換爲 int 並存儲在變量中時,浮點值將被截斷。這意味着小數點後的所有內容都將被丟棄。示例如下:

int x;

double y = 3.75;

x = y; // x被賦值爲3,y仍然保留3.75

 

但是,重要的是要了解,當變量值的數據類型更改時,它不會影響變量本身。

 

!!警告,浮點變量可以容納比整型變量更大的值範圍(int整型是2^31,float是2^128,double是2^1024  !!!)。如果浮點值存儲在整型變量中,並且整型變量的整數部分(即小數點前的部分)太大,則整型變量中將存儲無效值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章