2015-10-19 3 views
0

Я написал ниже на C++, чтобы выполнить задание на обучение, которое я нашел. Цель состоит в том, чтобы принять два аргумента и добавить их вместе перед их печатью.Принимая два аргумента, чтобы добавить их вместе в C++

Я скомпилировал программу с помощью g ++ и попытался запустить ее, вызвав ./a.out 1 2. Результаты: 1. Кажется, что это не печатает x + y и просто показывает первый аргумент. Что я здесь делаю неправильно? Мое ожидание было бы, что я показал бы номер 3.

#include <iostream> 
using namespace std; 

int x, y, z; 

int main(int argc, char *argv[]) { 
    y = atoi(argv[0]); 
    x = atoi(argv[1]); 
    z = (x + y); 
    cout << z << endl; 
    return 0; 
} 

Отказ от ответственности - Это происходит из текста книги, но я делаю это не для домашней работы. Это я пытаюсь научить себя C++.

+2

Поместите точку останова в первую строку и проверьте, что фактически содержит argv в вашем отладчике. Вы можете быть удивлены тем, что найдете. – MrEricSir

+2

, как только вы сможете, вам следует удобно пользоваться отладчиком (gdb в вашем случае), google для «учебника gdb» или что-то в этом роде – pm100

ответ

9

argv [0] - название программы. Вам нужны argv [1] и argv [2]

и BTW - причина, по которой вы получаете 1, состоит в том, что atoi останавливается на первой не цифре, в вашем случае она останавливается сразу и возвращает ноль при чтении имени программы. Итак, y = 0 и x = 1