次のコードスニペットをコンパイルして実行すると、行番号にprintステートメントが出力されると予想されます。 12も。しかし、それは起こりませんか?どうしてこんなことに? ifブロックの中でコンパイラはどのようにコメントを処理しますか?括弧のないif節の複数行コードブロックの奇妙な動作
1 #include <iostream>
2 using namespace std;
3
4 int main() {
5 int a;
6 if (false)
7 cout << "This will not be printed." << endl;
8 cout << "This will be printed anyway." << endl;
9
10 if (false)
11 // comment
12 cout << "This should also be printed. But not. Why?" << endl;
13 a = 100;
14
15 cout << "a = " << a << endl;
16 }
生成:
hyper150:~ 1041$ g++ what_if.cpp
hyper150:~ 1042$ ./a.out
This will be printed anyway.
a = 100
コメントは無視されます。あたかもそこにいないかのように。また、あなたの仲間のプログラマーに親切にして、そのようなインデントでそれらを誤解しないようにしてください。 –
@ggaur - 'if'ステートメントの後ろのコードブロックのように、コードブロックの周りに中括弧' {} 'を使用することはうまくいきます。 –
{なし} ifが次の行に当てはまると思います。そうではありません、C++は実際に行について知りません。これは、次のステートメントに適用されます。 – BoBTFish