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