C語言類型轉(zhuǎn)換與常量的細節(jié)深入理解探究
C 語言中的類型轉(zhuǎn)換
有時,您必須將一種數(shù)據(jù)類型的值轉(zhuǎn)換為另一種類型。這稱為類型轉(zhuǎn)換
隱式轉(zhuǎn)換
當您將一種類型的值分配給另一種類型的變量時,編譯器會自動進行隱式轉(zhuǎn)換。
例如,如果您將一個 int
值分配給一個 float
類型:
// 自動轉(zhuǎn)換:int to float float myFloat = 9; printf("%f", myFloat); // 輸出 9.000000
如您所見,編譯器會自動將 int
值 9 轉(zhuǎn)換為 float
值 9.000000。
這可能是危險的,因為您可能會在某些情況下失去對特定值的控制。
尤其是如果相反的情況 - 以下示例會自動將 float
值 9.99 轉(zhuǎn)換為 int
值 9:
// 自動轉(zhuǎn)換:float to int int myInt = 9.99; printf("%d", myInt); // 輸出 9
0.99 發(fā)生了什么?我們可能想要在我們的程序中使用這個數(shù)據(jù)!所以要小心。您必須了解編譯器在這些情況下的工作方式,以避免意外結(jié)果。
另一個例子,如果您將兩個整數(shù) 5 除以 2,您知道結(jié)果是 2.5。正如您在此頁面的開頭所知,如果您將 sum
存儲為整數(shù),結(jié)果將只顯示數(shù)字 2。因此,將 sum
存儲為 float
或 double
會更好,對嗎?
float sum = 5 / 2; printf("%f", sum); // 輸出 2.000000
為什么結(jié)果是 2.00000 而不是 2.5?好吧,因為 5 和 2 在除法中仍然是整數(shù)。在這種情況下,您需要將整數(shù)值手動轉(zhuǎn)換為浮點值(參見下文)。
顯式轉(zhuǎn)換
顯式轉(zhuǎn)換是通過在值之前放置類型括號 ()
來手動完成的。
考慮到我們上面示例中的問題,我們現(xiàn)在可以得到正確的結(jié)果:
// 手動轉(zhuǎn)換: int to float float sum = (float) 5 / 2; printf("%f", sum); // 輸出 2.500000
您也可以將類型放在變量前面:
int num1 = 5; int num2 = 2; float sum = (float) num1 / num2; printf("%f", sum); // 輸出 2.500000
由于您在上一章中學(xué)習(xí)了“小數(shù)精度”,您可以通過刪除多余的零(如果您愿意)使輸出更清晰:
int num1 = 5; int num2 = 2; float sum = (float) num1 / num2; printf("%.1f", sum); // 輸出 2.5
C 語言中的常量
如果您不想讓其他人(或自己)更改現(xiàn)有變量的值,可以使用 const
關(guān)鍵字。
這將聲明變量為“常量”,這意味著它不可更改,只讀:
const int myNum = 15; // myNum 始終為 15 myNum = 10; // 錯誤:對只讀變量 'myNum' 進行賦值
當您擁有不太可能改變的值時,應(yīng)始終將變量聲明為常量:
const int minutesPerHour = 60; const float PI = 3.14;
關(guān)于常量的注意事項
當您聲明一個常量變量時,必須為其分配一個值:
// 就像這樣: const int minutesPerHour = 60; // 然而,這不起作用: const int minutesPerHour; minutesPerHour = 60; // 錯誤
常量在程序中可以提高代碼的可讀性,并防止在程序中無意中更改重要的值
以上就是C語言類型轉(zhuǎn)換與常量的細節(jié)深入理解探究的詳細內(nèi)容,更多關(guān)于C語言類型轉(zhuǎn)換常量的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法
這篇文章主要介紹了詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09