亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果我將負值賦值給一個無符號變量,會發生什么情況?

如果我將負值賦值給一個無符號變量,會發生什么情況?

C++
瀟瀟雨雨 2019-07-06 17:47:44
如果我將負值賦值給一個無符號變量,會發生什么情況?我很想知道如果我將負值賦給一個無符號變量會發生什么。代碼看起來有點像這樣。unsigned int nVal = 0;nVal = -5;它沒有給我任何編譯器錯誤。當我運行程序時,nVal被分配了一個奇怪的值!會不會是某些2的補充值被分配給nVal?
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

正式答覆-第4.7節凸積分

“如果目標類型是無符號的,則結果值是與源整數一致的最小無符號整數(模2)。n哪里n用于表示無符號類型的位數)。[注意:在兩個補碼表示中,這種轉換是概念性的,位模式沒有變化(如果沒有截斷)。-尾注]

這在本質上意味著,如果底層體系結構存儲在一個不是兩個補碼的方法中(比如符號大小或一個補碼),那么向無符號結構的轉換必須表現為它是兩個補碼。


查看完整回答
反對 回復 2019-07-06
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

它將為無符號int分配表示-5(在2的補碼中)的位模式。這將是一個很大的無符號值。對于32位INT,這將是2^32-5或4294967291。


查看完整回答
反對 回復 2019-07-06
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

它將顯示為最大無符號整數-4(值取決于計算機體系結構和編譯器)值的正整數。

順便說一句
您可以通過編寫一個簡單的C+“hello world”類型程序來檢查這一點,然后自己查看


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關注
  • 2137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號