int a=1,b=2,c=3,d=4; if((a=2)||(b=1)) c=2; if((c==3)&&(d=-1)) a=5; 输出a,b,c,d2 2 2 4 请详述

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 10:50:57

int a=1,b=2,c=3,d=4; if((a=2)||(b=1)) c=2; if((c==3)&&(d=-1)) a=5; 输出a,b,c,d2 2 2 4 请详述
int a=1,b=2,c=3,d=4; if((a=2)||(b=1)) c=2; if((c==3)&&(d=-1)) a=5; 输出a,b,c,d
2 2 2 4 请详述

int a=1,b=2,c=3,d=4; if((a=2)||(b=1)) c=2; if((c==3)&&(d=-1)) a=5; 输出a,b,c,d2 2 2 4 请详述
我觉得这个问题的关键在于短路求值.初始值a=1,b=2,c=3,d=4,在第一个判断的语句中a=1是等式,他的返回值如果是真的话,后面的b=1就不会进行赋值,同样在双与运算符中同样存在短路求值的情况.第一个语句中a=2,返回值是的2,非零的整数在判断语句中视为真,或运算符只要一个是真结果就为真,所以后面的那个b=1不进行,结果c=2,再后面执行c==3时为0,所以后面的语句都不执行.总的来说这段进行了一次a=2的赋值及判断,c=2的赋值,其它的语句要么是不满足if的条件,要么是被短路求值了.