C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C / C ++で中括弧を省略するのはなぜ悪い習慣と見なされるのですか?


C ++では、if-elseステートメントの後、またはループの後の中括弧を省略できます。中括弧を使用しない場合、if-elseまたはloopの後の1つのステートメントのみがそのブロックの下で考慮されます。例-

if(condition) {
   Line 1
   Line 2
}

if(condition)
Line 1
Line 2

最初のケースでは、Line1とLine2の両方がifブロックにあります。しかし、2番目の条件では、Line1はifブロックにありますが、Line2はifブロックにありません。したがって、中括弧は省略できますが、if-elseまたはloopの下にステートメントが1つだけあります。

デバッグの目的で、コメントを付けるだけの場合もあります。これを使用して、そのステートメントなしで出力の効果を確認します。その時、if-elseまたは中括弧のないループはいくつかの問題を引き起こします。例-

if(condition) {
   Line 1
}
Line2

if(condition)
Line 1
Line 2

ここではどちらの場合も、Line1はifブロックにありますが、Line2はifブロックにはありません。したがって、条件が失敗した場合、または条件が満たされている場合は、Line2が常に実行されます。デバッグ目的で以下のような状況になると、問題が発生する可能性があります。

if(condition)
//Line 1
Line 2

Line1がコメントされている場合、それは問題ないと思いますが、この場合、コンパイラーはLine2がifブロックにあると見なしますが、それは間違っています。中かっこを使用すれば問題ありません。


  1. C / C ++で配列インデックスがゼロから始まるのはなぜですか?

    配列arr[i]は*(arr + i)として解釈されます。ここで、arrは、最初の配列要素または0インデックス要素のアドレスを示します。したがって、*(arr + i)は、配列の最初の要素からiの距離にある要素を意味します。したがって、最初はiが0であり、これは配列の最初の要素を意味するため、配列インデックスは0から始まります。 これをC++で示すプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int arr[] = {5,8,9,3,5};   &n

  2. C++でのラインリフレクション

    2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <