2017-10-05 10 views
0

メソッドを呼び出すと、私はmainメソッドので、複数回(C++)

int main() { 
int x = 0; 
inc(x); 
inc(x); 
inc(x); 
std::cout << x << std::endl; 
} 

を持っているI(x)は私の出力は「3」であることを取得しようとしているが、なぜ毎回の株式会社を把握することはできません呼ばれる

0にリセットさxは、私のINC方式:

int inc(int x){ 
    ++x; 
    std::cout << "x = " << x << std::endl; 
    return x; 
} 

私の出力:

x = 1 
 
    x = 1 
 
    x = 1 
 
    0

私は私の主な機能

答えて

1

代わりの

inc(x); 

を編集せずにこの問題を解決することができます(x)はincのためにすべての呼び出し後のxのリセットを行い、どのように、なぜ私はあなたが

が必要だと思います
x = inc(x); 

あなたは今あなたの頭を叩くかもしれません。

+0

を印刷します() - 彼の質問は、彼がそれをしないことを指定します。 – Brian

0

inc()の値をinc()に渡しているので、inc()の変更はmain()では表示されません。

0

xを変更したい場合は、値ではなく参照で渡す必要があります。また、inc()はそれを意味するためにvoidを返す必要があります。ここに例があります。

// adding & before x passes the reference to x 
void inc(int &x){ 
    ++x; 
    std::cout << "x = " << x << std::endl; 
} 
int main() { 
    int x = 0; 
    inc(x); 
    inc(x); 
    inc(x); 
    std::cout << x << std::endl; 
} 

これは彼が主な変更する必要があり

x = 1 
x = 2 
x = 3 
3 
関連する問題