C語(yǔ)言中無(wú)符號(hào)與有符號(hào)及相加問題
C語(yǔ)言中無(wú)符號(hào)與有符號(hào)問題
unsigned char a[5] = { 12,36,96,128,182 };
a[]范圍為0~256. 數(shù)組中數(shù)都有效。
char a[5] = { 12,36,96,128,182 };
a[]范圍為-128~127. 數(shù)組中128和182均無(wú)效。
C語(yǔ)言中無(wú)符號(hào)數(shù)和有符號(hào)數(shù)相加問題
看個(gè)題:
#include<stdio.h> int main() { unsigned int a=6; int b=-20; printf("%d\n",a+b); (a+b)>6? puts(">6"):puts("<=6"); return 0; }
結(jié)果是:-14 >6
意想不到吧?
為什么結(jié)果這樣呢?
原來(lái)有符號(hào)數(shù)和無(wú)符號(hào)數(shù)進(jìn)行比較運(yùn)算時(shí)(==,<,>,<=,>=),有符號(hào)數(shù)隱式轉(zhuǎn)換成了無(wú)符號(hào)數(shù)(即底層的補(bǔ)碼不變,但是此數(shù)從有符號(hào)數(shù)變成了無(wú)符號(hào)數(shù)),比如上面 (a+b)>6這個(gè)比較運(yùn)算,a+b=-14,-14的補(bǔ)碼為1111111111110010。此數(shù)進(jìn)行比較運(yùn)算時(shí),被當(dāng)成了無(wú)符號(hào)數(shù),它遠(yuǎn)遠(yuǎn)大于6,所以得到上述結(jié)果。
總結(jié)
以上所述是小編給大家介紹的C語(yǔ)言中無(wú)符號(hào)與有符號(hào)及相加問題,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
- C語(yǔ)言各種符號(hào)的使用介紹上篇
- C語(yǔ)言詳細(xì)解析有符號(hào)數(shù)與無(wú)符號(hào)數(shù)的表示
- C語(yǔ)言詳細(xì)講解注釋符號(hào)的使用
- C語(yǔ)言特殊符號(hào)的補(bǔ)充理解
- 關(guān)于C語(yǔ)言中弱符號(hào)與弱引用的實(shí)際應(yīng)用問題
- C語(yǔ)言中無(wú)符號(hào)數(shù)和有符號(hào)數(shù)之間的運(yùn)算
- 舉例講解C語(yǔ)言鏈接器的符號(hào)解析機(jī)制
- 詳解C語(yǔ)言中的符號(hào)常量、變量與算術(shù)表達(dá)式
- C語(yǔ)言各種符號(hào)的使用介紹下篇
相關(guān)文章
MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果
這篇文章主要為大家詳細(xì)介紹了MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05Qt+FFMPEG實(shí)現(xiàn)循環(huán)解碼詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Qt+FFMPEG實(shí)現(xiàn)循環(huán)解碼功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下2022-08-08C/C++ ip地址與int類型的轉(zhuǎn)換實(shí)例詳解
這篇文章主要介紹了C/C++ ip地址與int類型的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,這里提供了實(shí)例代碼,實(shí)現(xiàn)思路及實(shí)現(xiàn)方法,需要的朋友可以參考下2016-12-12探索Visual C++下創(chuàng)建WPF項(xiàng)目的方法示例
這篇文章主要介紹了探索Visual C++下創(chuàng)建WPF項(xiàng)目的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07