c++中的分段错误

segmentation fault in C++

本文关键字:错误 分段 c++      更新时间:2023-10-16

我遇到了输入1000000011,5的问题。

输出应为:5000000058 .

我面临分割错误。

#include<iostream>
 using namespace std;
 int main()
 {
    int c,r;
    cin>>r>>c;
    cout<<endl;
    int k;
    if(r%2==1)
 {
    k= 10*(r/2)+2*(c-1);
  }
    else if(r%2==0)
 {
    k=10*(r/2-1)+(2*(c-1)+1);
  }
    cout<<k;
    return 0;
  }

"

您面临的是溢出,而不是分段故障。

5000000058根本不适合使用的32位整型。您应该使用使用更多位的类型来存储值。

在这种特殊情况下,更改为long long应该可以达到目的。

int c,r;更改为long long c,r;,将int k;更改为long long k;,并按预期工作