首页 > 试题广场 >

运行下图中的C语言代码 bool Fun1(ch

[填空题]

运行下图中的C语言代码

bool Fun1(char*
str) {
    printf("%s", str);
    return false;
}
 
bool Fun2(char*
str) {
    printf("%s", str);
    return true;
}
 
int main(int argc, char *argv[])  {
    bool res1,
res2;
    res1 = (Fun1("a") &&
Fun2("b")) || (Fun1("c") || Fun2("d"));
    res2 = (Fun1("a") &&
Fun2("b")) && (Fun1("c") || Fun2("d"));
 
    return res1 || res2;
}
  输出打印的结果是:1
这里需要明确的一个性质:若&&左侧的运算结果为false,则运算到此结束,右侧就不运算了。
所以对上面两个表达式:
res1 = (Fun1("a") &&Fun2("b")) /式1  ||  (Fun1("c") /式2 ||  Fun2("d")); /式3
先运算式1:左边Fun("a"),返回false,输出a,Fun2("b")不再运算,然后运算式2,式3,则运算完res1输出:a,c,d,res1赋值true。
res2 = (Fun1("a") &&Fun2("b")) /式1 && (Fun1("c") || Fun2("d")) /式2 ;
式1与式2同等地位,但运算顺序从左开始。对式1,Fun1("a") 输出a,返回false,则Fun2("b")不会再运算,式2不会再运算。所以运算完后仅输出a,res2赋值false。




编辑于 2020-02-19 12:12:54 回复(0)
我大意了,没有(闪)
发表于 2020-12-06 19:09:59 回复(0)

热门推荐