若有以下程序 #include main() { int a=1,b=2,c=3,d=4; if ((a=2) || (b=1)) c=2; if ((c==3) && (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c

admin2020-05-19  16

问题 若有以下程序
#include
main()
{ int a=1,b=2,c=3,d=4;
if ((a=2) || (b=1)) c=2;
if ((c==3) && (d=-1)) a=5;
printf("%d,%d,%d,%d\n", a,b,c,d);
}
则程序的输出结果是( )。

选项 A、2,2,2,4
B、2,1,2,-1
C、5,1,2,-1
D、1,2,3,4

答案A

解析 根据逻辑表达式的"短路求值"原理,逻辑或的第一个表达式"a=2"的值为真,则表达式"b=1"不再计算,整个逻辑表达式值为真,执行语句"c=2;",第二个if语句条件不成立,所以第二个表达式"d=-1"也不计算,所以变化的值有a和c,变化后a=2,c=2,所以答案选A。
转载请注明原文地址:https://kaotiyun.com/show/X0Cp777K
0

最新回复(0)