簡體   English   中英

兩個正整數相加得到否定答案。為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM