C++ 我的代码没有';有些大数字不起作用
我有这段代码,它适用于大多数输入,但也有一些代码会给我带来错误。例如“-100000000000000001 10000000000000000”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
#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来修复此问题?我尝试过,但没有帮助。