您好,登錄后才能下訂單哦!
這篇“C語言類型轉(zhuǎn)換的作用是什么及怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言類型轉(zhuǎn)換的作用是什么及怎么使用”文章吧。
C語言中的數(shù)據(jù)類型可以進行轉(zhuǎn)換
強制類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換
強制類型轉(zhuǎn)換的語法
(Type)var_name;
(Type)value;
強制類型轉(zhuǎn)換的結(jié)果
目標類型能夠容納目標值:結(jié)果不變
目標類型不能容納目標值:結(jié)果將產(chǎn)生截斷
注意:不是所有的強制類型轉(zhuǎn)換都能成功,當不能進行強制類型轉(zhuǎn)換時,編譯器將產(chǎn)生錯誤信息(比如將自定義數(shù)據(jù)類型轉(zhuǎn)換成基本數(shù)據(jù)類型)。
下面看一段強制類型轉(zhuǎn)換的代碼:
#include <stdio.h> struct TS { int i; int j; }; struct TS ts; int main() { short s = 0x1122; char c = (char)s; // 0x22 int i = (int)s; // 0x00001122 int j = (int)3.1415; // 3 unsigned int p = (unsigned int)&ts; //long l = (long)ts; // error //ts = (struct TS)l; // error printf("s = %x\n", s); printf("c = %x\n", c); printf("i = %x\n", i); printf("j = %x\n", j); printf("p = %x\n", p); printf("&ts = %p\n", &ts); return 0; }
下面為輸出結(jié)果:
注意將自定義數(shù)據(jù)類型轉(zhuǎn)換成基本數(shù)據(jù)類型會報錯。
隱式類型轉(zhuǎn)換是編譯器主動進行的類型轉(zhuǎn)換
注意:
低類型到高類型的隱式類型轉(zhuǎn)換是安全的,不會產(chǎn)生截斷
高類型到低類型的隱式類型轉(zhuǎn)換是不安全的,導(dǎo)致不正確的結(jié)果
隱式類型轉(zhuǎn)換的發(fā)生點
算術(shù)運算式中,低類型轉(zhuǎn)換為高類型
賦值表達式中,表達式的值轉(zhuǎn)換為左邊變量的類型
函數(shù)調(diào)用時,實參轉(zhuǎn)換為形參的類型
函數(shù)返回值,return表達式轉(zhuǎn)換為返回值類型
安全的隱式類型轉(zhuǎn)換:
下面看一段隱式類型轉(zhuǎn)換的代碼:
#include <stdio.h> int main() { char c = 'a'; int i = c; // safe unsigned int j = 0x11223344; short s = j; // unsafe printf("c = %c\n", c); printf("i = %d\n", i); printf("j = %x\n", j); printf("s = %x\n", s); printf("sizeof(c + s) = %d\n", sizeof(c + s)); return 0; }
下面為輸出結(jié)果:
c 為 char 類型,s 為 short 類型,再進行四則運算前,各個比 int 窄的加數(shù)自動提升為 int,結(jié)果也為 int 類型,故 size 為4
以上就是關(guān)于“C語言類型轉(zhuǎn)換的作用是什么及怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。