我有兩個變量,我詢問用戶輸入:添加之前的整數溢出,但不是之後?
number_1 DWORD ?
number_2 DWORD ?
sum DWORD ?
從我的理解,一個DWORD是可以從0到4,294,967,295存儲整數的32位無符號整型數據。
然而,當我輸入2147483648,或1以上的符號的整數範圍內,使用以下代碼:
call readInt
mov number_1, eax
我接收在命令提示一個<32-bit integer overflow>
警告。
但是,我可以輸入2,147,483,647到number_1
和number_2
,add
他們和存儲在sum
沒有問題。當它顯示時,它顯示4,294,967,294,因爲它應該。
EAX寄存器是否只能接受最大有符號32位整數值?
'eax'可以保存32位,而不管數據是否被認爲是有符號的或無符號的。我不知道爲什麼會發生這種情況。 – byxor
你的意思是什麼「輸入」,你如何「接收」一個警告,什麼是確切的信息? – melpomene
更新爲包含輸入代碼和收到的確切警告。 – cafekaze