为什么这个输出" geeksforgeeks"?

时间:2018-05-09 10:56:36

标签: c++

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

    return 0;
}

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

2 个答案:

答案 0 :(得分:5)

  

为什么cout&lt;&lt; &#34;爱好者&#34 ;;在if条件执行中?

因为否则计算机不知道它是否是真实的&#34;或&#34; false&#34;?

给定if (foo()),必须调用函数foo;这扩展到一般的任何表达式,必须在它们的&#34;结果之前进行评估。可以知道(但请注意,由于短路可能会跳过子表达式。)

答案 1 :(得分:0)

关注以下声明:

if (!(cout << "geeks"))

这里cout与&lt;&lt;运算符被重载以输出流作为输出,即&#34;极客&#34; 然后它将此流返回到if语句。

if语句检查条件,即if(!(&#34; geeks&#34;)),if语句看起来好像(!(true)),结果为false。

因此,其他语句执行以打印&#34; forgeeks&#34;