0

私はプログラミングに非常に慣れていないため、for ループ内の変数のスコープについて疑問に思っていました。
合計する数値の量を表す数値をユーザーに入力するように求めるものを作成しようとしていました。したがって、3 を入力すると、3 つの数字が加算されます。

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
  int nTarget;
  cout <<"Enter the amount of numbers you wish to add: ";
  cin >> nTarget;
  while (nTarget < 0)
    {
        cout <<"Negative number detected, please enter a positive number: ";
        cin >> nTarget;
    }
    for(int nAccum = 0, nNext, nCounter = 0; nCounter < nTarget; nCounter++)
    {
        cout <<"Enter the number to be added: ";
        cin >> nNext;
        nAccum = (nAccum + nNext)
    }
  cout <<"The total is " << nAccum << endl;

    system("PAUSE");
    return 0;
}

コードが読みにくくずさんで申し訳ありませんが、いじりました。私の問題は、「'nAccum' が ISO 'for' スコープ用に変更された場合の名前検索」というエラーが表示されることです。
これは、for ループの外ではその変数にアクセスできないということですか? それを変更できるようにする方法はありますか?
そして、元のコードが機能し、nAccum の値を取得したとしましょう。累積された値を保持するのでしょうか、それとも for ループが終了するとその値は完全に消去されるのでしょうか?
これらの本当に初心者の質問で申し訳ありませんが、他の場所で答えを見つけることができませんでした.答えることを決めた人に感謝します.

4

4 に答える 4

1

ループ内で変数を宣言すると、そのスコープはループ内のみになります。例えば:

    for(int i=0; i<3; i++) {
   i=i+2;
}
cout<<i; // here it will give you an error because i is destroyed. outside the loop it doesn't exist.

ループ外で nAccum をカウントすると、同じ間違いをしています

于 2014-04-05T21:43:35.010 に答える
0

nAccum は、ループではなく、関数にスコープする必要があります。関数の先頭、nTarget と同じ場所で定義 (および初期化) します。

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
  int nTarget;
  int nAccum = 0;
  cout <<"Enter the amount of numbers you wish to add: ";
  cin >> nTarget;
  while (nTarget < 0)
    {
        cout <<"Negative number detected, please enter a positive number: ";
        cin >> nTarget;
    }
    for(int nNext, nCounter = 0; nCounter < nTarget; nCounter++)
    {
        cout <<"Enter the number to be added: ";
        cin >> nNext;
        nAccum = (nAccum + nNext)
    }
  cout <<"The total is " << nAccum << endl;

    system("PAUSE");
    return 0;
}
于 2013-07-07T04:44:03.283 に答える
0

for ループの外側で nAccum にアクセスする場合は、外側で宣言するだけです。

int nAccum = 0;
for(int nNext, nCounter = 0; nCounter < nTarget; nCounter++)
{
    cout << "Enter the number to be added: ";
    cin >> nNext;
    nAccum = (nAccum + nNext)
}
cout << "The total is " << nAccum << endl;
于 2013-07-07T04:44:11.037 に答える