有下列程序: #include<stdio.h> main() { int a=1,b=﹣2; for(;a--&&b++;) printf(”%d,%d,”,a,b); printf(

admin2022-10-25  24

问题 有下列程序:
     #include<stdio.h>
     main()
     {
     int a=1,b=﹣2;
     for(;a--&&b++;)
     printf(”%d,%d,”,a,b);
     printf(”%d,%d”,a,b);
     }
     程序执行后的输出结果是(          )。

选项 A、0,﹣1,﹣1,﹣1
B、0,﹣1,﹣1,0
C、0,﹣1,﹣1,0,﹣1,0
D、0,﹣1,﹣1,﹣1,﹣1,﹣1

答案 A

解析 程序定义整型变量a和b,初值分别是1,﹣2。for语句中循环条件式为“a--&&b++”,因为--和++的优先级高于逻辑与运算符&&,所以循环条件式等价于“(a--)&&(b++)”,自左向右运算。第1轮循环,a、b的值分别为1,﹣2,首先执行a﹣﹣,a﹣﹣的值为1,执行完后a的值为0;继续执行b++,b++的值为﹣2,执行完后b的值为﹣1。整个表达式“a﹣﹣&&b++”的值为真,程序输出0,﹣1。第2轮循环,a、b的值分别为0,﹣1,首先执行a﹣﹣,a﹣﹣的值为0,执行完后a的值为﹣1,由于a﹣﹣的值为0,根据逻辑与运算的短路原则,表达式“a﹣﹣&&b++”的值一定为假,表达式b++不再执行,循环结束,执行循环体外的printf语句,输出a、b的值分别为﹣1,﹣1。所以本题输出结果为0,﹣1,﹣1,﹣1。本题答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/iCkp777K
0

随机试题
最新回复(0)