數據類型相關內容與強制類型轉換
一個數字數據類型可以容納的數字大於另一個數據類型,從上到下排序:
可以稱越處於上方的,排名越高
在數學表達式中數據類型的自動轉換規則:
規則 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 !!!)。如果浮點值存儲在整型變量中,並且整型變量的整數部分(即小數點前的部分)太大,則整型變量中將存儲無效值。