为什么输出"geeksforgeeks"?

-10 c++

#include <iostream>
using namespace std;
int main()
{
    if (!(cout << "geeks"))
       cout <<" geeks ";
    else
       cout << "forgeeks ";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么cout << "geeks";在if条件中执行?我知道if语句是假的.我"forgeeks "只期待.

Lig*_*ica 5

为什么cout <<"极客"; 在if条件执行中?

因为否则计算机不会知道它是"真"还是"假"?

给定if (foo()),foo必须调用该函数; 这扩展到一般的任何表达式,必须在它们的"结果"已知之前进行评估(尽管注意可能由于短路而跳过子表达式).