當我編譯下面的代碼片段並運行它時,我期望它在第no行打印語句。 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
評論被忽略。彷彿他們甚至不在那裏。另外,請對您的程序員友善,不要以這樣的縮進來誤導他們。 – 2012-02-03 08:13:01
@ggaur - 圍繞代碼塊使用大括號'{}',就像'if' statemens之後的那樣,這是一個非常好的主意。 – 2012-02-03 08:21:09
我想你認爲如果沒有{}適用於下一行。事實並非如此,C++並不真正瞭解線條。它適用於下一個基本上處於下一個狀態的聲明; – BoBTFish 2012-02-03 09:00:25