C語言中無符號(hào)與有符號(hào)及相加問題
C語言中無符號(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均無效。
C語言中無符號(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é)果這樣呢?
原來有符號(hào)數(shù)和無符號(hào)數(shù)進(jìn)行比較運(yùn)算時(shí)(==,<,>,<=,>=),有符號(hào)數(shù)隱式轉(zhuǎn)換成了無符號(hào)數(shù)(即底層的補(bǔ)碼不變,但是此數(shù)從有符號(hào)數(shù)變成了無符號(hào)數(shù)),比如上面 (a+b)>6這個(gè)比較運(yùn)算,a+b=-14,-14的補(bǔ)碼為1111111111110010。此數(shù)進(jìn)行比較運(yùn)算時(shí),被當(dāng)成了無符號(hào)數(shù),它遠(yuǎn)遠(yuǎn)大于6,所以得到上述結(jié)果。
總結(jié)
以上所述是小編給大家介紹的C語言中無符號(hào)與有符號(hào)及相加問題,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果
這篇文章主要為大家詳細(xì)介紹了MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Qt+FFMPEG實(shí)現(xiàn)循環(huán)解碼詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Qt+FFMPEG實(shí)現(xiàn)循環(huán)解碼功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下2022-08-08
C/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)目的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

