Суммирование командной строки

Довольно просто, я пытаюсь суммировать все целые числа, введенные в командной строке. Сумма фактически работает, если я запускаю программу с вводом "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 ответ

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,

Другие вопросы по тегам