Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何解决运行时错误问题,如;有符号整数溢出:2147483644+;4不能用类型'表示;int'&引用;?_C_Cs50 - Fatal编程技术网

C 如何解决运行时错误问题,如;有符号整数溢出:2147483644+;4不能用类型'表示;int'&引用;?

C 如何解决运行时错误问题,如;有符号整数溢出:2147483644+;4不能用类型'表示;int'&引用;?,c,cs50,C,Cs50,我甚至尝试使用long int来代替int,但是编译器执行起来花费了太多时间,仍然没有给出任何输出 我正在使用CS50的IDE 以下是导致问题的代码: int sum_alt = 0; int sum_rest = 0; int total = 0; for(int i = 1; i < count; i=+2) { int temp = number[i] * 2; sum_alt = sum_alt + temp; } for(int i = 0; i <=

我甚至尝试使用long int来代替int,但是编译器执行起来花费了太多时间,仍然没有给出任何输出

我正在使用CS50的IDE

以下是导致问题的代码:

int sum_alt = 0;
int sum_rest = 0;
int total = 0;

for(int i = 1; i < count; i=+2)
{
    int temp = number[i] * 2;
    sum_alt = sum_alt + temp;
}

for(int i = 0; i <= count; i=+2)
{
    int temp = number[i];
    sum_rest = sum_rest + temp;
}

total = sum_rest + sum_alt;
int sum\u alt=0;
int sum_rest=0;
int-total=0;
对于(int i=1;i对于(int i=0;i这是因为2147483644+4=2147483648大于2147483647(有符号int32限制)。并且64位整数类型为long long int,AFAIK

因此,它应该是:

long long int sum_alt = 0;
long long int sum_rest = 0;
long long int total = 0;

for(int i = 1; i < count; i=+2)
{
    int temp = number[i] * 2;
    sum_alt = sum_alt + temp;
}

for(int i = 0; i <= count; i=+2)
{
    int temp = number[i];
    sum_rest = sum_rest + temp;
}

total = sum_rest + sum_alt;
long int sum\u alt=0;
long long int sum_rest=0;
长整型合计=0;
对于(int i=1;i对于(int i=0;i这是因为2147483644+4=2147483648大于2147483647(有符号int32限制)。并且64位整数类型为long long int,AFAIK

因此,它应该是:

long long int sum_alt = 0;
long long int sum_rest = 0;
long long int total = 0;

for(int i = 1; i < count; i=+2)
{
    int temp = number[i] * 2;
    sum_alt = sum_alt + temp;
}

for(int i = 0; i <= count; i=+2)
{
    int temp = number[i];
    sum_rest = sum_rest + temp;
}

total = sum_rest + sum_alt;
long int sum\u alt=0;
long long int sum_rest=0;
长整型合计=0;
对于(int i=1;i对于(int i=0;i以下代码从用户处获取信用卡号,检查其长度和总和,并确定发卡机构

该程序可以通过从中获得的信用卡号进行测试

这段代码的属性是

  • 它不会输入可能确实溢出的整数
  • 它处理一系列字符
  • Luhn算法已正确实施(必须求和
    数字[i]*2
    的位数)
  • 我改进了测试以识别信用卡发卡机构(基于前4位);原始代码中有很多错误
#包括
#包括
int main()
{
char-buf[32];
printf(“输入信用卡号:”);
fgets(buf、sizeof(buf)、stdin);
int len=0;
while(isdigit(buf[len]))
len++;
if(len<13 | | len>16){
printf(“无效\n”);
返回1;
}
//验证信用卡号校验和
整数校验和=0;
对于(int i=0;i=5100&&start<5600)| | |(start>=2221&&start=3400&&start<3500)| |(start>=3700&&start<3800))){
printf(“美国运通”);
}否则如果(len==14&((start>=3000&&start<3060)| | start/100==36 | | start/100==38)){
printf(“食客俱乐部”);
}否则如果(len==16&(start==6011 | | start/100==65)){
printf(“DISCOVER\n”);
}如果((len==15&(start==2131 | | start==1800))| |(len==16&&start/100==35)){
printf(“JCB\n”);
}否则{
printf(“未知\n”);
}
返回0;
}

以下代码从用户处获取信用卡号,检查其长度和总和,并确定发卡机构

该程序可以通过从中获得的信用卡号进行测试

这段代码的属性是

  • 它不会输入可能确实溢出的整数
  • 它处理一系列字符
  • Luhn算法已正确实施(必须求和
    数字[i]*2
    的位数)
  • 我改进了测试以识别信用卡发卡机构(基于前4位);原始代码中有很多错误
#包括
#包括
int main()
{
char-buf[32];
printf(“输入信用卡号:”);
fgets(buf、sizeof(buf)、stdin);
int len=0;
while(isdigit(buf[len]))
len++;
if(len<13 | | len>16){
printf(“无效\n”);
返回1;
}
//验证信用卡号校验和
整数校验和=0;
对于(int i=0;i=5100&&start<5600)| | |(start>=2221&&start=3400&&start<3500)| |(start>=3700&&start<3800))){
printf(“美国运通”);
}否则如果(len==14&((start>=3000&&start<3060)| | start/100==36 | | start/100==38)){
printf(“食客俱乐部”);
}否则如果(len==16&(start==6011 | | start/100==65)){
printf(“DISCOVER\n”);
}如果((len==15&(start==2131 | | start==1800))| |(len==16&&start/100==35)){
printf(“JCB\n”);
}否则{
printf(“未知\n”);
}
返回0;
}

您的代码不完整。您试图实现什么?为什么长int
需要更长的时间来计算?计算持续时间不受
计数的限制吗?您是否也增加了
计数的值?在
中的
计数的值是多少(int i=1;i
?阵列中有多少个元素