输出是什么,为什么? folk() && (!folk())
我不确定是否应执行&&之后的代码。
#include <stdio.h>
#include <unistd.h>
int main()
{
if(folk() && (!folk())) {
folk();
}
printf("Apple\n");
fflush(NULL);
return 0;
}
答案 0 :(得分:1)
如果false
返回if
,则不会执行!folk()
语句的第二部分(即folk()
)。如果true
返回!folk()
,则如果false
的第一次执行没有改变folk()
的行为,则folk()
返回if
。
因此,在那种情况下,false
语句的主体永远不会执行(条件总是返回folk()
)。
但是,如果第一次调用folk()
修改了if
的行为,则可能执行bool folk()
{
static bool ret = false;
if (ret) ret = false;
else ret = true;
return ret;
}
语句的主体。
后者的示例:
folk()
在这里,true
首先返回false
,然后返回true
,然后再次返回folk()
,依此类推。
现在,使用if(folk() && !folk()) { folk(); }
的此实现,让我们回到您的示例:
folk()
true
的第一次执行返回false
第二次执行返回!folk()
,因此true
返回if
因为true
语句中的条件现在返回folk()
,所以主体被执行,对true
的第三次调用再次返回value type
----- ------------------
'\\[' string
/\[/ regular expression