- 編寫高質量代碼:改善C程序代碼的125個建議
- 馬偉 著
- 659字
- 2019-01-01 01:33:12
建議4:數據類型轉換必須做范圍檢查
在C語言中,數據類型轉換一般可分為隱式轉換和顯式轉換,也稱為自動轉換和強制轉換。其中,常見的隱式轉換有4種,如下所示。
1)一般算術轉換:通過某些運算符將操作數的值從一種類型自動轉換成另為一種類型,這一規則為“由低級向高級轉換”,具體如圖1-37所示。

圖1-37 數據類型轉換規則
根據圖1-37所示的規則可知,若參與運算的變量類型不同,則先將變量的類型轉換成同一類型,然后再進行運算。例如,int類型的變量和long類型的變量參與運算時,則會先把int類型的變量轉成long類型,然后再進行運算。
這里需要特別注意的是,所有的浮點運算都是以雙精度進行的,即使表達式中僅含float單精度變量,也要先將其轉換成double類型后再進行運算。同時,如果char類型的變量和short類型的變量參與運算,則必須先轉換成int類型。
2)輸出轉換:輸出的操作數類型與輸出的格式不一致時所進行的數據類型的轉換。如下面的示例代碼所示:
printf("%u",-1);
在VC++2010中,上面的代碼將輸出的值為4294967295。
3)賦值轉換:在賦值運算過程中將賦值運算符右側的操作數類型轉換成左側操作數據的類型。
4)函數調用轉換:當實參類型和形參類型不一致時數據所進行的轉換。
同樣,顯式轉換也提供了兩種轉換方法,如下所示。
1)強制性數據類型轉換:它是將一種類型的數據強制轉換成為另一種數據類型。其格式為:
(數據類型標識符)表達式;
其作用是將表達式的數據類型強制轉換成數據類型標識符所表示的類型。示例代碼如下所示:
int i1=321; float f4=(float)i1/9.0f;
2)利用C語言提供的標準函數轉換,示例代碼如下所示:
int i1; char *c; c="123"; i1=atoi(c); printf("%d",i1);
推薦閱讀
- 數字媒體應用教程
- 圖解Java數據結構與算法(微課視頻版)
- DevOps入門與實踐
- Java加密與解密的藝術
- Interactive Applications Using Matplotlib
- Oracle JDeveloper 11gR2 Cookbook
- Elasticsearch Server(Third Edition)
- Android底層接口與驅動開發技術詳解
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- .NET 4.0面向對象編程漫談:應用篇
- Getting Started with React VR
- Getting Started with Electronic Projects
- Python GUI Programming Cookbook(Second Edition)
- Using Yocto Project with BeagleBone Black
- Laravel Design Patterns and Best Practices