国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++ unsigned和int類型轉換及運算

2019-11-10 22:23:13
字體:
來源:轉載
供稿:網(wǎng)友

一、規(guī)則總結

1. 在c++中,如果賦值給無符號類型一個超過它表示范圍的值(如負數(shù)),結果是初始值對無符號類型表示數(shù)值最大值取模后的余數(shù)。

2. 在c++中,如果表達式中同時有無符號類型和有符號類型,會默認將有符號類型轉換為無符號類型進行運算,運算結果也是無符號類型。

二、以int和unsigned為例

1. 如果賦值給unsigned一個負數(shù)值,結果是什么?結果是將該負數(shù)對unsigned表示數(shù)最大值取模后的余數(shù)。

(1)unsigned表示數(shù)最大值

在大部分編譯器中該類型占4個字節(jié),則最大值是2的32次方,為4294967296。

(2)負數(shù)的取模運算

負數(shù)的取模運算和數(shù)學中的取余運算不同,區(qū)別主要體現(xiàn)在:取模運算是向負的無窮大取值,而取余運算是向0取值。舉例說明:如-3對2取余結果為-1,但-3對2取模結果則是-2。

(3)賦值給unsigned一個負數(shù)值時實際得到的結果

                         

上述程序的輸出結果是:

結果是怎么算出來的呢?

u=-1,-1對4294967296取模,結果還是-1,而取模后的余數(shù)是4294967296-(-1*-1)=4294967295

u=-20,-20對4294967296取模,結果是-20,取模后的余數(shù)是4294967296-20=4294967276

u=-4294967296(這是unsigned能表示的負數(shù)的極限),結果是-1(除不盡的需要向負無窮取值,能除盡就不用了),取模后的余數(shù)是4294967296-4294967296=0

2. 如果表達式中同時有unsigned和int,計算結果是什么?結果是將int轉換為unsigned后再計算,結果也按照unsigned來轉換

上述程序的輸出結果為:

結果是怎么算出來的呢?

u1-u2=10-42=-32,u1和u2都是unsigned,結果也應是unsigned,-32超過了unsigned的表示范圍,需要轉換。按照上一小節(jié)中的轉換方式,轉換結果為4294967264

i1-u1=11-10=1,結果為unsigned的1。

u1-i1=10-11=-1,u1是無符號數(shù),i1首先轉換為無符號數(shù)為11,計算結果為-1,超出了unsigned范圍,轉換后為4294967295。

i=-1,轉換為unsigned后4294967295,所以i-u=4294967295-10=4294967285

三、結論

切勿混用帶符號類型和無符號類型!!!


上一篇:c++重載

下一篇:c++知識

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

圖片精選

主站蜘蛛池模板: 长白| 西安市| 五常市| 丹巴县| 托里县| 临沭县| 万安县| 阳原县| 荔浦县| 乌拉特中旗| 通江县| 永福县| 怀安县| 吉木萨尔县| 乐至县| 武功县| 盐津县| 南皮县| 吴川市| 唐山市| 高淳县| 贵德县| 三台县| 黄石市| 延庆县| 通城县| 阿拉善盟| 子长县| 桦川县| 青川县| 应城市| 金山区| 安西县| 定远县| 永城市| 梁山县| 湘潭市| 陈巴尔虎旗| 朝阳县| 黔江区| 新巴尔虎左旗|