1

for-scope 内で異なる型の変数を宣言して初期化しようとしています。何かのようなもの:

for (int i = 0, double u = 1; i < 10; ++i)
{...}

しかし、コンパイラ (gcc) はエラーを返します。

同じ型変数 ( example ) を使用して初期化を実行できることは知っていますが、異なる変数でどのようにそれを実行できるかはわかりません。

もちろん、ループの外で変数を宣言することもできます:

double u = 1;
for (int i = 0; i < 10; ++i)
{...}

uしかし、変数はforスコープ内でのみ使用されるため、クリーンなものを探しています。そう、

  • 私はそれを行うことができますか?
  • もしそうなら、どうすればいいですか?
4

3 に答える 3

2

宣言ステートメントで複数の型を宣言することはできません。for ループにリモートで近いスコープ内に u を含める唯一の方法は、次のようになります。

{
    double u = 1;
    for (int i = 0; i < 10; ++i)
    {
        //some code
    }
}// u's scope will end here
于 2013-08-04T23:24:46.340 に答える
1

もちろん、新しいスコープを作成することもできますが、関数を作成する方がより一般的な方法です。

void foo()
{
    // So this function deals with loop and does something with 'u'.
    double u = 1;
    for (int i = 0; i < 10; ++i)
    { ... }
}

関数が本当に必要かどうかはわかりませんが、非常にクリーンで自然な方法だと思います。

于 2013-08-05T00:10:32.613 に答える
0

コードの別の部分でこれらの変数を宣言しているかのように考える必要があります。型を共有している場合、常に同じ行で必要な数の変数を宣言できます。次のように宣言できます: int a=3, b=3; しかし ';' この型宣言の終わりを指します。しようとする場合: int a=3, double b= 3.4; あなたが望むように、コンパイラはそれを b 変数の "double" 宣言として変換します。最初にコンパイラはそれを int として認識しますが、別の型を指定しています。それがあなたがそれをすることができない理由です。コンパイラの希望どおりに実行しようとすると (type variable=value; another_type another_variable = another_value;)、for 構造が壊れます。

于 2013-08-04T23:29:41.907 に答える