[英]Summing the command line
非常简单,我试图将命令行中输入的所有整数相加。 该和实际上有效,如果我使用“ 1 1 1 1”输入启动程序,该和将增加四倍。 问题在于总和被初始化为一个非常大的数字(4293283588)。 这是为什么?
int main(int argc, char*argv[])
{
int a = 0;
int sum = 0;
size_t i = 0;
for (i=0; i<argc; i++)
{
a = atoi(argv[i]);
sum = sum + a;
printf("%ld\n", sum);
}
return 0;
}
argv[0]
可能是可执行文件的名称。 从标准:
5.1.2.2.1程序启动
....
如果
argc
的值大于零,则argv[0]
指向的字符串表示程序名称 ; 如果程序名称在主机环境中不可用,则argv[0][0]
应为空字符。 如果argc
的值大于1,则argv[1]
指向的字符串
到argv[argc-1]
表示程序参数 。
尝试
for (i=1; i<argc; i++)
同样,如@BLUEPIXY所示, %ld
假定为long
类型。 因此,要么将其更改为%d
,要么使用long sum
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.