強制類型轉換是把變量從一種類型轉換為另一種數據類型。例如,如果您想存儲一個 long 類型的值到一個簡單的整型中,您需要把 long 類型強制轉換為 int 類型。您可以使用強制類型轉換運算符來把值顯式地從一種類型轉換為另一種類型,如下所示:
(type_name) expression
請看下面的實例,使用強制類型轉換運算符把一個整數變量除以另一個整數變量,得到一個浮點數:
#include
{ intsum = 17, count = 5;
doublemean; mean = (double)sum / count;
printf("Value of mean : %f ", mean); }
當上面的代碼被編譯和執行時,它會產生下列結果:
Value of mean :3.400000
這里要注意的是強制類型轉換運算符的優先級大于除法,因此sum的值首先被轉換為double型,然后除以 count,得到一個類型為 double 的值。
類型轉換可以是隱式的,由編譯器自動執行,也可以是顯式的,通過使用強制類型轉換運算符來指定。在編程時,有需要類型轉換的時候都用上強制類型轉換運算符,是一種良好的編程習慣。
整數提升
整數提升是指把小于int或unsigned int的整數類型轉換為int或unsigned int的過程。請看下面的實例,在 int 中添加一個字符:
#include
{ inti = 17;
charc = 'c'; /* ascii 值是 99 */ intsum; sum = i + c;
printf("Value of sum : %d ", sum); }
當上面的代碼被編譯和執行時,它會產生下列結果:
Value of sum :116
在這里,sum 的值為 116,因為編譯器進行了整數提升,在執行實際加法運算時,把 'c' 的值轉換為對應的 ascii 值。
常用的算術轉換
常用的算術轉換是隱式地把值強制轉換為相同的類型。編譯器首先執行整數提升,如果操作數類型不同,則它們會被轉換為下列層次中出現的最高層次的類型:
常用的算術轉換不適用于賦值運算符、邏輯運算符 && 和 ||。讓我們看看下面的實例來理解這個概念:
#include
charc = 'c'; /* ascii 值是 99 */ floatsum; sum = i + c;
printf("Value of sum : %f ", sum); }
當上面的代碼被編譯和執行時,它會產生下列結果:
Value of sum :116.000000
在這里,c 首先被轉換為整數,但是由于最后的值是 double 型的,所以會應用常用的算術轉換,編譯器會把 i 和 c 轉換為浮點型,并把它們相加得到一個浮點數。
-
C語言
+關注
關注
180文章
7604瀏覽量
136701 -
編譯器
+關注
關注
1文章
1624瀏覽量
49108
原文標題:C語言中的強制類型轉換
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論