gpt4 book ai didi

c - 为什么在编译程序时我的 max 和 min int 不工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:17 25 4
gpt4 key购买 nike

我不明白为什么会出现错误:

~/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

我正在寻找一种在命令行中添加大数字时不会使我的程序崩溃的方法。

#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;
}

最佳答案

重新定义 INT_MININT_MAX 不会改变实际限制,只会使描述它们的常量不准确。

限制基于您平台的整数大小/宽度。要具有真正不同的限制,您需要使用不同的数据类型(例如,long 而不是 int)。

如果 long 不够大,您可能需要进一步移动到 long long;请注意,在 C99 标准之前没有指定这些,因此您需要有一个相当现代的编译器。


将您的程序更改为使用 long 而不是 int 将如下所示:

#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;
}

关于c - 为什么在编译程序时我的 max 和 min int 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21897350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com