W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
強制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。例如,如果您想存儲一個 long 類型的值到一個簡單的整型中,您需要把 long 類型強制轉(zhuǎn)換為 int 類型。您可以使用強制類型轉(zhuǎn)換運算符來把值顯式地從一種類型轉(zhuǎn)換為另一種類型,如下所示:
(type_name) expression
請看下面的實例,使用強制類型轉(zhuǎn)換運算符把一個整數(shù)變量除以另一個整數(shù)變量,得到一個浮點數(shù):
#include <stdio.h>
int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean );
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Value of mean : 3.400000
這里要注意的是強制類型轉(zhuǎn)換運算符的優(yōu)先級大于除法,因此 sum 的值首先被轉(zhuǎn)換為 double 型,然后除以 count,得到一個類型為 double 的值。
類型轉(zhuǎn)換可以是隱式的,由編譯器自動執(zhí)行,也可以是顯式的,通過使用強制類型轉(zhuǎn)換運算符來指定。在編程時,有需要類型轉(zhuǎn)換的時候都用上強制類型轉(zhuǎn)換運算符,是一種良好的編程習慣。
整數(shù)提升是指把小于 int 或 unsigned int 的整數(shù)類型轉(zhuǎn)換為 int 或 unsigned int 的過程。請看下面的實例,在 int 中添加一個字符:
#include <stdio.h>
int main()
{
int i = 17;
char c = 'c'; /* ascii 值是 99 */
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum );
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Value of sum : 116
在這里,sum 的值為 116,因為編譯器進行了整數(shù)提升,在執(zhí)行實際加法運算時,把 'c' 的值轉(zhuǎn)換為對應的 ascii 值。
常用的算術(shù)轉(zhuǎn)換是隱式地把值強制轉(zhuǎn)換為相同的類型。編譯器首先執(zhí)行整數(shù)提升,如果操作數(shù)類型不同,則它們會被轉(zhuǎn)換為下列層次中出現(xiàn)的最高層次的類型:
常用的算術(shù)轉(zhuǎn)換不適用于賦值運算符、邏輯運算符 && 和 ||。讓我們看看下面的實例來理解這個概念:
#include <stdio.h>
int main()
{
int i = 17;
char c = 'c'; /* ascii 值是 99 */
float sum;
sum = i + c;
printf("Value of sum : %f\n", sum );
}
當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Value of sum : 116.000000
在這里,c 首先被轉(zhuǎn)換為整數(shù),但是由于最后的值是 double 型的,所以會應用常用的算術(shù)轉(zhuǎn)換,編譯器會把 i 和 c 轉(zhuǎn)換為浮點型,并把它們相加得到一個浮點數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: