2
else if((RI >= 181) && (RI <= 210)){
        if((ICT1 = false) || ((ICT2 = false) || (ICT3 = false))){
        cout << "ICT \n";
        if(ICT1 = false){
            ICT1 = true;
            goto endICT;
        }
        if(ICT2 = false){
            ICT2 = true;
            goto endICT;
        }
        if(ICT3 = false){
            ICT3 = true;
            goto endICT;
        }
            endICT:
    }

やあ!これは私のプログラムの一部にすぎません。このコードは、さまざまな変数やその他のものとともに数回表示されます。コードをコンパイルすると、「エラー C2143: 構文エラー: ';' がありません」が表示されます。before '}'" 私はこのすべてのコーディングに慣れていないので、助けていただければ幸いです! 御時間ありがとうございます!編集: 申し訳ありませんが、以前は十分なコードが含まれていませんでした! 基本的に乱数を選び、範囲内であればこの部分を通過します。最初の 'if' が true にならないため、この範囲は 3 回しか選択できません。これまでご協力いただきありがとうございました。また、エラーは「endICT:」行にあります。

4

4 に答える 4

4

まず第一に、gotoステートメントを使用することは悪い習慣であると考えられていることに注意してください。他に選択肢がない場合にのみ使用してください。

このコードには他にもいくつかあります。コードにいくつかコメントしました

if(ICT3 = false) //this will assign value false into variable ICT3
     //you might want to write if(ICT3 == false) to compare and execute
{
   ICT3 = true;
   goto endICT; //this goto statement is completely redundant
}

//I assume that you want to have some code here, that does not execute
//if ICT3 == false in the first place... You should use if() ... else
//statement instead

endICT: ; //You are missing some ; here should be enough
}

C/C++ のフロー制御ステートメントの詳細については、こちらを参照してください。C/C++ の演算子の詳細については、これを試してください

于 2013-04-01T22:47:16.033 に答える
4

空のステートメントを挿入するだけです。

                   if(ICT3 = false){
        ICT3 = true;
        goto endICT;
    }
        endICT: ;
}
于 2013-04-01T22:29:01.997 に答える
0

これは、投稿されたコードと意味的に同等です。

else if ( RI >= 181 && RI <= 210 )
{
    cout << "ICT \n";
    if ( ! ICT1 )
        ICT1 = true;
    else if ( ! ICT2 )
        ICT2 = true;
    else if ( ! ICT3 )
        ICT3 = true;
}
于 2013-04-02T22:06:01.583 に答える
0

おそらく、コンパイラはあなたのラベル endICT と混同しています:

その後に終了します )

于 2013-04-01T22:29:21.160 に答える