[英]Adding two positive integers gives negative answer.Why?
#include<iostream>
using namespace std;
int main(){
int x = 1967513926;
int y = 1540383426;
cout<<x+y;
return 0;
}
以上兩個整數之和為 3507897352 < 2^32.So 為什么答案錯誤? 請幫忙...
int
是有符號類型,所以它的最大值是 2^31 - 1 = 2147483647,而不是 2^32 - 1。所以在這種情況下你確實會溢出。
當您溢出int
類型時,程序的行為未定義:
C++11 標准的第 5/4 段(關於任何一般表達式):
如果在對表達式求值期間,結果未在數學上定義或不在其類型的可表示值范圍內,則行為未定義。 [...]
在嘗試求和之前,請檢查參數的限制( std::numeric_limits
在這里很有用)。
或者,您可以使用unsigned
類型:溢出這些是安全的,因為標准規定一旦達到最大值,它們將環繞為 0。
int
的限制是 2.147.483.647
你只是溢出它。
當你(在int
)2.147.483.647 + 1 時。這給你 –2147483648。 ;)
迪帕克,
請檢查 int 提供的最大限制,如果您的總和超過它,這將不起作用,您必須增加整數值的長度。
您可以嘗試 numeric_limits ,它可以為您帶來您正在尋找的最大尺寸。
希望這可以幫助!!
干杯!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.