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

admin2020-11-23  53

问题 有以下程序
#include
main()
{ int a=1,b=2,c=3,d=0;
if (a==1 && b++==2)
if (b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是( )。

选项 A、1,3,3
B、1,3,2
C、1,2,3
D、3,2,1

答案A

解析 else总是与前面距离它最近的且未曾配对的if语句配对。"a=1,b=2,c=3,d=0",所以语句"if(a==1 && b++==2)"的判定条件为真,之后b自加1,其值为3。而语句"if (b!=2||c--!=3)"的判定条件也为真,根据逻辑运算符的"短路求值"原理,表达式"b!=2"为真后整个逻辑表达式的值就为真,"c--!=3"不再计算,所以答案选A。
转载请注明原文地址:https://kaotiyun.com/show/NM3p777K
0

相关试题推荐
最新回复(0)