C++ 我的代码没有';有些大数字不起作用

C++ 我的代码没有';有些大数字不起作用,c++,C++,我有这段代码,它适用于大多数输入,但也有一些代码会给我带来错误。例如“-100000000000000001 10000000000000000” #include <iostream> #include <cstdio> using namespace std; int x,y,m; int aux=0; int toPerfect(int a,int b,int per){ if(a >= per || b >= per){ a

我有这段代码,它适用于大多数输入,但也有一些代码会给我带来错误。例如“-100000000000000001 10000000000000000”

#include <iostream>
#include <cstdio>

using namespace std;
int x,y,m;
int aux=0;
int toPerfect(int a,int b,int per){
    if(a >= per || b >= per){
         aux=0;

    }else if(a<=0 && b<=0){
                 aux = -1;
           }else{
                 while(a < per && b < per){
                      if(a > b){
                           b = b+a;
                       }else{
                             a = a+b;   
                            }
                      aux++;        
                }
               }

     return aux;
}

int main(){
    cin >>x>>y>>m;
    cout << toPerfect(x,y,m) << endl;
    cin.get();

}
#包括
#包括
使用名称空间std;
int x,y,m;
int aux=0;
int-toPerfect(int-a、int-b、int-per){
如果(a>=每| b>=每){
aux=0;
}如果(a>x>>y>>m;
cout你正在看一个。这个问题在这里经常被问到,也许应该有一个有这个名字的专门论坛

…当算术运算试图 创建一个太大而无法在 可用存储空间。例如,将1添加到最大值 它可以表示为一个整数溢出 这些情况下的共同结果是最不显著的 要存储的结果的可表示位(结果称为 包装)


我在这里提到的一些数据类型的范围。检查它,根据需要更改代码

signed char: -127 to 127
unsigned char: 0 to 255
signed short: -32767 to 32767
unsigned short: 0 to 65535
signed int: -32767 to 32767
unsigned int: 0 to 65535
signed long: -2147483647 to 2147483647
unsigned long: 0 to 4294967295
signed long long: -9223372036854775807 to 9223372036854775807
unsigned long long: 0 to 18446744073709551615

检查系统上的
sizeof(int)
是什么。如果是4,则无法存储大于2^32-1的数字。如何使用long-long而不是int来修复此问题?我尝试过,但没有帮助。