淺談c語(yǔ)言中類(lèi)型隱性轉(zhuǎn)換的坑
謹(jǐn)記:在C語(yǔ)言中,當(dāng)兩種不同類(lèi)型之間運(yùn)算時(shí),低字節(jié)長(zhǎng)度類(lèi)型會(huì)向高自己長(zhǎng)度類(lèi)型轉(zhuǎn)換,有符號(hào)會(huì)向無(wú)符號(hào)類(lèi)型轉(zhuǎn)換。
舉例子如下:
#include <stdio.h>
void func(void)
{
int i = 1;
unsigned char c1 = 1;
signed char c2 = -1;
if (c2 > i){
printf("\r\n -1 > 1");
}
else{
printf("\r\n -1 <= 1");
}
if (c2 > c1){
printf("\r\n -1 > 1");
}
else {
printf("\r\n -1 <= 1");
}
printf ("\n");
}
int main()
{
func();
return 0;
}
輸出:
-1 <= 1
-1 <= 1
當(dāng)C2與i進(jìn)行比較時(shí),由于C2是有符號(hào)8位,i是無(wú)符號(hào)32位,根據(jù)C語(yǔ)言的規(guī)則,c2被轉(zhuǎn)換成32位,即-1的補(bǔ)碼,故會(huì)得出-1>1的結(jié)論。
而后面一個(gè)-1<1的情況是 c2轉(zhuǎn)化成無(wú)符號(hào)8位整數(shù),即255,255, 所以大于1。
以上這篇淺談c語(yǔ)言中類(lèi)型隱性轉(zhuǎn)換的坑就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程
利用C/C++開(kāi)發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程,需要的朋友可以參考下2021-09-09
C++ 動(dòng)態(tài)內(nèi)存管理詳情解說(shuō)
這篇文章主要介紹了C++ 動(dòng)態(tài)內(nèi)存管理詳情解說(shuō),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-07-07
使用Qt的QChartView實(shí)現(xiàn)縮放和放大功能
QCustomPlot是一個(gè)小型的Qt畫(huà)圖標(biāo)類(lèi),支持繪制靜態(tài)曲線、動(dòng)態(tài)曲線、多重坐標(biāo)曲線,柱狀圖,蠟燭圖,這篇文章主要介紹了Qt的QChartView實(shí)現(xiàn)縮放和放大功能,需要的朋友可以參考下2022-09-09
C語(yǔ)言關(guān)于自定義數(shù)據(jù)類(lèi)型之枚舉和聯(lián)合體詳解
枚舉顧名思義就是把所有的可能性列舉出來(lái),像一個(gè)星期分為七天我們就可以使用枚舉,聯(lián)合體是由關(guān)鍵字union和標(biāo)簽定義的,和枚舉是一樣的定義方式,不一樣的是,一個(gè)聯(lián)合體只有一塊內(nèi)存空間,什么意思呢,就相當(dāng)于只開(kāi)辟最大的變量的內(nèi)存,其他的變量都在那個(gè)變量占據(jù)空間2021-11-11
C++對(duì)象的淺復(fù)制和深復(fù)制詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了C++對(duì)象的淺復(fù)制和深復(fù)制詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04
關(guān)于C語(yǔ)言 文件讀寫(xiě) feof 函數(shù)
這篇文章主要給大家分享的是關(guān)于C語(yǔ)言文件讀寫(xiě) feof 函數(shù) ,feof 是 C 語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù),其功能是檢測(cè)文件結(jié)束符,如果文件結(jié)束,則返回非 0 值,否則返回 0,感興趣的小伙伴請(qǐng)跟小編一起來(lái)看看下面文章的內(nèi)容吧2021-10-10
C++?primer超詳細(xì)講解關(guān)聯(lián)容器
兩個(gè)主要的關(guān)聯(lián)容器為map和set,map中元素是一些關(guān)鍵字—值對(duì),關(guān)鍵字起索引的作用,值則表示與索引相關(guān)聯(lián)的數(shù)據(jù)。set中每個(gè)元素只包含一個(gè)關(guān)鍵字,set支持高效的關(guān)鍵字查詢操作——檢查一個(gè)給定關(guān)鍵字是否在set中2022-07-07

