繁体   English   中英

总结命令行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM