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

admin2022-04-02  21

问题 有下列程序
 #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++),自左向右运算。第一轮循环,a、b的值为1,-2,首先执行a--,a--的值为1,执行完后a的值为0,继续执行b++,b++的值为-2,执行完后b的值为-1,整个表达式“a--&&b++”的值为真,程序输出0,-1。接着继续循环,第二轮循环,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/3hkp777K
0

最新回复(0)