官术网_书友最值得收藏!

建議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);

主站蜘蛛池模板: 罗平县| 柯坪县| 曲沃县| 新津县| 托克托县| 萨嘎县| 庆云县| 齐齐哈尔市| 苍南县| 云南省| 泽普县| 武清区| 青田县| 安阳市| 隆安县| 罗江县| 财经| 苏尼特右旗| 仙桃市| 万安县| 济宁市| 洛阳市| 宜黄县| 同江市| 洞头县| 绥化市| 观塘区| 两当县| 绍兴市| 乌鲁木齐市| 务川| 镇雄县| 四川省| 荥经县| 大渡口区| 尼勒克县| 阿勒泰市| 荔浦县| 泰顺县| 博客| 芜湖市|