总结命令行

时间:2014-09-29 00:29:15

标签: c command-line atoi argc

非常简单,我试图在命令行中对所有输入的整数求和。实际上总和是有效的,如果我用" 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;
}

1 个答案:

答案 0 :(得分:4)

argv[0]可能是可执行文件的名称。从标准:

  

5.1.2.2.1程序启动

     

...

     

如果 argc 的值大于零,则 argv[0] 指向的字符串   表示程序名称; argv[0][0] 如果是,则为空字符   程序名称不能从主机环境中获得。如果 argc 的值为   大于一, argv[1] 指向的字符串 argv[argc-1]   代表程序参数

尝试

for (i=1; i<argc; i++)

此外,正如 @BLUEPIXY 所示,%ld假定类型为long。因此,要么将其更改为%d,要么使用long sum