我不明白为什么我收到错误:
~/SecureSoftware$ gcc AddNumTest.c
AddNumTest.c:11:0: warning: "INT_MAX" redefined [enabled by default]
/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h:121:0: note: this is the location of the previous definition
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法,在命令行中添加一个大数字时不会崩溃我的程序.
#include<stdio.h>
#include <stdlib.h>
#include <limits.h>
#define INT_MAX (2147483647)
#define INT_MIN (-2147483647)
int main(int argc, char** argv)
{
int i, TotalOfNumbers = 0;
for (i = 1; i < argc; i++)
{
TotalOfNumbers += atoi(argv[i]);
printf("Total of numbers entered = %d\n", TotalOfNumbers);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
重新定义INT_MIN并且INT_MAX不改变实际限制,它只是使描述它们的常量不准确.
限制基于平台的整数大小/宽度.要拥有真正不同的限制,您需要使用不同的数据类型(例如,long而不是int).
如果a long不够大,你可能需要进一步向上移动long long; 请注意,这些在C99标准之前未指定,因此您需要具有合理的现代编译器.
将程序更改为使用longs而不是ints将如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, char** argv)
{
long long i, TotalOfNumbers = 0;
for (i = 1; i < argc; i++)
{
TotalOfNumbers += atoll(argv[i]);
printf("Total of numbers entered = %lld\n", TotalOfNumbers);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)