2011-12-26 6 views
0

私はこの基本的なコードブロックを使って条件を理解しています。私は括弧などを見逃していたとは思わないが、2番目のelse節の前に文がないというエラーが出るが、これは分からない。他に先にある文がありません

#include stdio.h; 
main() 
{ 
    int a = 2; 
    int b = 4; 
    int c = 6; 
    int d = 8; 
    if (a > b) 
    { 
     a = a - 1; 
     printf("a = %d ", a); 
    } 
    else 
    { 
     if (b >= c) 
     { 
      b == b ? : 2; 
     } 
     printf("b = %d ", b); 
    } 
    else 
    { 
     if (c > d) 
     { 
      c = c + d; 
     } 
    } 
    else 
    { 
     d = d/2; 
    } 
} 

お勧めはありますか?

+0

downvoteは不要です... –

答えて

1

このコードは、いくつかのより多くのオーソドックスなスタイルの一つでインデント、あなたと同じです。あなたが見ることができるように

int main(void) 
{ 
    int a = 2; 
    int b = 4; 
    int c = 6; 
    int d = 8; 

    if (a > b)  
    { 
     a = a - 1; 
     printf("a = %d ", a); 
    } 
    else 
    { 
     if (b >= c) 
     { 
      b == b ? : 2; // Syntax errors here too (and statement with no effect?) 
     } 
     printf("b = %d ", b); 
    } 
    else 
    { 
     if (c > d) 
     { 
      c = c + d; 
     } 
    } 
    else 
    { 
     d = d/2; 
    } 
} 

、あなたは一つだけを許可されている3つの連続else句は、あります。

他にも構文の問題があります。 Cプログラミング で

3

あなたが適切にあなたのコードをインデントする場合は、問題が表示されます:

} else { 
    if (c > d) { 
     c = c + d; 
    } 
} else { 
    d = d/2; 
} 
+0

問題は表示されませんか? ifはelse内にあり、もう一方は自己完結型ですか? –

+0

@SonnyOrdell:いいえ。途中に余分な '}'があるので、 'if'は' else'にはありません。インデントに注意してください。 – SLaks

+0

ifはelseの中にあります.c = c + dは括弧で囲まれています。 –

0

。これ

if(condition 1) 
     statement1; 
    else if(condition 2) 
     statement2; 
    else if(condition 3) 
     statement3; 
    else 
     statement4; 
1

のようにCの構造は、if文のための唯一の1 else文を持つことができ、他の...場合。代わりに、いくつかのelseif文を持つことができます。 ifステートメントのelseステートメントの数を増やすと、その構文に関するエラーが報告されます。

プログラムのエラーは、2番目のelseにはifが前に存在している必要があることを示しています。 したがって、中間のelse文を入れ子にしてelseif文に変換します。最後のelseステートメントをそのまま残しておけば、そのエラーから抜け出すことができます。

関連する問題