1

文字列に対していくつかの操作を実行し、結果を返す次の関数を定義しました。

string Message()
{
string result = "";
int l;

    result += "1";
    for(l = 0; l < routers; l++)
    {
        result += " " + table[l];

    }
    cout<<result<<endl;
return result;
}

ただし、返された結果をwhileループでフェッチ(フェッチと名付けることができる場合)し、それを出力すると、それらは同じではありません!!

while(true)
{    
string a = Message();
cout<<a<<endl;

//do some operation
}

結果:

1 12 13 15 21 1 (printed out before exiting the function)
1 12 13 15 21 (after fetching)

その理由は何ですか?

4

2 に答える 2

1

ほとんどの場合、「その他の操作」のコードはグローバル変数を変更するroutersか、可能性は低いですが、変数 Table を変更します。

幸運を!

于 2013-11-03T04:51:42.823 に答える
0

一部のシステムで何が問題なのかわかりませんが、「l < ルーター」の部分を「l <= ルーター」に変更したところ、問題なく動作しています。どちらも同じ結果になります。

string Message()
{
string result = "";
int l;

result += "1";
for(l = 0; l <= routers; l++)
{
    result += " " + table[l];

}
cout<<result<<endl;
return result;
}
于 2013-11-05T03:01:34.897 に答える