Странное поведение многострочного блока кода в предложении if без круглых скобок

Когда я компилирую следующий фрагмент кода и запускаю его, я ожидаю, что он выведет утверждение в строке №. 12. Но этого не происходит? Почему так происходит? Как компилятор обрабатывает комментарий в блоке 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
0
задан amit 3 February 2012 в 08:22
поделиться