国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 關于C語言的隱式類型轉換

關于C語言的隱式類型轉換 時間:2018-09-26      來源:未知

同種數(shù)據(jù)類型的變量在進行運算的時候,我們都知道怎么去運算

比如int a = 5, b = 10;

那么a+b的結果也是int類型的;

如果是不同的數(shù)據(jù)類型的變量在進行混合運算的時候,就需要將其轉換成同種數(shù)據(jù)類型,然后再進行運算

比如:int = 5;

float b = 10.5;

a+b的結果是多少呢?

這就牽扯到了我們所說的隱式類型轉換啦,我們先來看一副圖:

從上圖中,我們可以看到,float類型轉換成了double類型的,int類型也要轉換成double的,然后才可以進行運算,也就是說a+b的結果就是15.5啦

我們來驗證一下:

我們看到代碼運行的結果a+b的結果為浮點數(shù),大家可以試一下,14行代碼如果改成%d的話,編譯時就會有類型不匹配的警告,所以int類型與float類型在進行混合運算的時候,都轉換成了double類型。

再繼續(xù)回到圖2-3,我們可以看到圖中有兩個方向的箭頭,都分別表示什么意思呢?

同樣我們舉例說明,先來看豎向箭頭:

我們可以看到a+b的結果是大于0的,那么也就是說int類型與unsigned int類型在進行混合運算的時候,先轉換為unsigned int類型,然后再進行運算。

同樣,我們再來看一個橫向箭頭的例子:

可以發(fā)現(xiàn),sizeof(a+b)的結果為4,如果a+b還是char類型的話,結果應該是1,我們結合圖2-3,也就是說char類型在進行運算的時候,勢必要向int類型轉換,不管有沒有進行混合運算。

再來看一個例子:

打印的結果為a + b <= 0,結合圖2-3,我們可以推斷出char類型與unsigned char在進行運算時,都轉換成了int類型,同樣,如果將char改成short,unsigned char改成unsigned short,結果也是a + b <= 0,那就說明了short與unsigned short在進行運算時,也都轉換成了int。

所以:我們可以總結出,豎向箭頭表示不同的數(shù)據(jù)類型在進行混合運算的時候,會有一個低字節(jié)向高字節(jié)轉換的過程,橫向箭頭表示不管該類型有沒有進行混合運算都勢必會進行轉換,再進行運算,但是需要注意:比如int類型與double類型進行運算,不是int->unsigned->long->double這么一個過程,而是int類型會直接轉換成double類型。

后,再強調一點,我們說int與double類型運算時,int會轉換成double,如下圖:

我們可以看出,在編譯時,出現(xiàn)了警告,說明實際上a的類型實質上并沒有轉換成double類型的,而只是在運算的過程中發(fā)生了轉換。

上一篇:Android異步加載AsyncTask的使用

下一篇:談談socket 套接字

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部