亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中無符號數和有符號數之間的運算

2020-01-26 13:55:36
字體:
來源:轉載
供稿:網友

C語言中有符號數和無符號數進行運算(包括邏輯運算和算術運算)默認會將有符號數看成無符號數進行運算,其中算術運算默認返回無符號數,邏輯運算當然是返回0或1了。

unsigned int和int進行運算

直接看例子來說明問題吧

#include <iostream>using namespace std;int main(){     int a = -1;     unsigned int b = 16;     if(a > b)         cout<<"負數竟然大于正數了!/n";     return 0;}

輸出結果為:

這是因為a和b進行比較的時候,編譯器將有符號數a看成了無符號數,然后再和b進行比較,在內存中(32位)

a : 11111111 11111111 11111111 11111111

b : 00000000 00000000 00000000 00010000

看成無符號數,自然是a>b。

#include <iostream>using namespace std;int main(){     int a = -1;     unsigned int b = 16;     cout<<a + b<<endl;     int c = -16;     unsigned int d = 15;     cout<<c + d<<endl;     return 0;}

輸出結果為:

可以看到a+b的結果貌似比較正常,但是c+d和我們想象的好像不太一樣。其實4294967295就是11111111 1111111 11111111 1111111就是-1在內存中的形式,看成無符號數就是這個結果啦。所以unsigned int和int做運算會將int看成unsigned int,而且結果也是unsigned int。

unsigned char和char進行運算

看一個顛覆上面邏輯的例子:

#include <iostream>using namespace std;int main(){     char a = -16;     unsigned char b = 14;     if(a > b)         cout<<"負數大于正數了!/n";     cout<<a+b<<endl;     return 0;}

輸出結果:

如果按照上面unsigned int和int進行運算的邏輯,這里unsigned char和char進行運算,那應該是a要看成無符號數,所以a的值比較大呀,而且a+b的結果應該是-2對應的無符號數,也就是254才對呀?

之所以會出現上面的結果是因為,C語言中比int小的整型(包括short 、unsigned short 、 unsigned char和char)在運算中都要轉換成int然后進行運算。所以上面,無論是邏輯運算a>b還是算術運算a+b中a和b都默認轉換成了int,所以算術運算的結果也是帶符號的。

但是還需要注意一個問題就是轉換成int類型的時候,高位補齊的問題。

如果是unsigned的類型轉換成int類型,高位補0.

如果是signed的類型轉換成int類型,如果原來最高位是1則補1,如果是0則補0。

比如:

#include <iostream>using namespace std;int main(){     char a = -16;     unsigned char b = 255;     char c = 255;     cout<<a+b<<endl;     cout<<a+c<<endl;     return 0;}

其中char c = 255,在內存中為11111111,最高位是1,轉換成int時高位補1,也就是11111111 11111111 11111111 11111111,就是-1

注意:轉換成unsigned int類型時,也是一樣的。

比如:

#include <iostream>using namespace std;int main(){     char a = 255;     unsigned int b = a;     cout<<b<<endl;     char c = 15;     unsigned int d = c;     cout<<d<<endl;     return 0;}

a在內存中為11111111,最高位是1,轉換時高位補1,也就是

11111111 11111111 11111111 11111111,也就是無符號數2^32

c在內存中為00001111,最高位是0,轉換高位補0,也就是

00000000 00000000 00000000 00001111,還是15

#include <iostream>using namespace std;int main(){     unsigned char a = 255;     int b = a;     cout<<b<<endl;     unsigned char c = 15;     int d = c;     cout<<d<<endl;     return 0;}

對于unsigned char在轉換成int或unsigned int時,無論最高位是0還是1,都補0。

對于unsigned short和short進行運算,和char和unsigned char一樣,都是要先轉換成int,然后再進行運算。

轉換時高位補齊的方法也和unsigned char、char一樣。

總結

以上所述是小編給大家介紹的C語言中無符號數和有符號數之間的運算,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看片第一页欧美| 久久久久日韩精品久久久男男| 免费91麻豆精品国产自产在线观看| 91美女福利视频高清| 亚洲精品福利免费在线观看| 国产精品女视频| 国产精品狼人色视频一区| 国产综合福利在线| 国产精品久久久久久久7电影| 日韩欧美在线中文字幕| 国产精品丝袜高跟| 91在线免费看网站| 日韩电影免费在线观看中文字幕| 91啪国产在线| 在线观看中文字幕亚洲| 97在线视频免费看| 欧美日韩国产123| 午夜精品久久久99热福利| 欧美夜福利tv在线| 亚洲美女视频网站| 欧美激情视频在线观看| 欧美日韩中文字幕日韩欧美| 欧美激情一区二区三级高清视频| 欧美性生活大片免费观看网址| 欧美成在线视频| 国产91免费观看| 久久久久99精品久久久久| 欧美日韩国产精品一区二区三区四区| 韩国欧美亚洲国产| 精品久久久精品| 亚洲精品综合久久中文字幕| 精品欧美激情精品一区| 九九精品视频在线| 国产精品手机播放| 成人免费高清完整版在线观看| 最近中文字幕日韩精品| 亚洲精品色婷婷福利天堂| 激情av一区二区| 欧美xxxx18国产| 久久97久久97精品免视看| 欧美性猛xxx| 97免费视频在线| 亚洲国产精品久久久久秋霞不卡| 亚洲www在线观看| 国产精品日韩欧美| 国产精品福利观看| 亚洲欧美精品中文字幕在线| 久久亚洲精品国产亚洲老地址| 97在线日本国产| 久久亚洲国产精品| 欧美激情小视频| 亚洲人成网站免费播放| 欧美精品久久久久久久| 欧美日韩国内自拍| xxxx欧美18另类的高清| 九色91av视频| 91国产视频在线播放| 欧美性猛交xxxx久久久| 久久久av电影| 久久久99久久精品女同性| 国语自产精品视频在线看抢先版图片| 人人做人人澡人人爽欧美| 青青草99啪国产免费| 国产精品成人一区二区| 日韩欧美在线视频日韩欧美在线视频| 亚洲国产欧美一区二区三区久久| 亚洲精品美女免费| 久久久女女女女999久久| 国产精品青青在线观看爽香蕉| 97精品国产97久久久久久| 国产成人精品视频在线| 国产欧美日韩中文字幕| 最近中文字幕mv在线一区二区三区四区| 45www国产精品网站| 亚洲免费中文字幕| 欧洲亚洲妇女av| 国产欧美日韩中文| 丝袜亚洲欧美日韩综合| 欧美又大粗又爽又黄大片视频| 九九精品在线播放| 国自产精品手机在线观看视频| 91久久精品国产91性色| 中文字幕日韩欧美在线| 欧洲亚洲免费视频| 色综合久久88| 成人免费视频xnxx.com| x99av成人免费| 一区二区三区黄色| 成人中文字幕+乱码+中文字幕| 成人激情视频在线观看| 91综合免费在线| 国产欧美一区二区三区久久人妖| 伊人伊人伊人久久| 国产成人在线精品| 国产69久久精品成人看| 久久久噜噜噜久久久| 午夜精品一区二区三区在线视频| 91精品国产精品| 亚洲情综合五月天| 日韩精品在线私人| 亚洲精品视频网上网址在线观看| 亚洲国产天堂网精品网站| 国产精品亚洲网站| 欧美黑人xxx| 欧美性猛交xxxx富婆| 欧美裸体xxxx极品少妇软件| 国产丝袜视频一区| 色偷偷av一区二区三区| 亚洲女人天堂av| 中文字幕成人精品久久不卡| 久久久久久尹人网香蕉| 亚洲高清免费观看高清完整版| 欧美性生交xxxxxdddd| 九九热这里只有在线精品视| 午夜精品福利视频| 黑人极品videos精品欧美裸| 日韩精品视频在线观看免费| 日韩国产高清污视频在线观看| 欧美性xxxx极品高清hd直播| 日韩精品视频观看| 欧美黄色片免费观看| 色悠久久久久综合先锋影音下载| 日韩hd视频在线观看| 国产精品日韩专区| 欧美大荫蒂xxx| 亚洲天堂免费在线| 欧美日韩爱爱视频| 欧美最顶级丰满的aⅴ艳星| 大胆人体色综合| 国产99视频精品免视看7| 国产原创欧美精品| 国产精品免费久久久| 精品久久久久久久久久ntr影视| 欧美国产中文字幕| 欧美激情一二区| 日韩中文字幕在线视频| 热99精品只有里视频精品| 成人美女免费网站视频| 色视频www在线播放国产成人| 97成人超碰免| 欧美另类老肥妇| 亚洲成人动漫在线播放| 91精品综合久久久久久五月天| 国产欧美日韩专区发布| 欧美视频中文在线看| 日韩av影视在线| 日韩精品极品在线观看播放免费视频| 91精品久久久久| 亚洲天堂免费观看| 国产成人高潮免费观看精品| 久久久精品欧美| 久久久久久av| 国产精品一区二区电影| 91国语精品自产拍在线观看性色| 国产在线日韩在线| 精品成人国产在线观看男人呻吟| 国产欧美一区二区三区四区| 欧美日韩一区二区免费在线观看| 亚洲成色777777女色窝| 夜夜狂射影院欧美极品| 日韩在线视频二区| 中文字幕亚洲在线| 精品一区二区三区四区| 欧美成人免费小视频|