c语言,希望各位可以解答!

.以下程序的执行结果为 2,1,1,1
#include<stdio.h>
void main(
inta,b,c,f;
a-b-c-1;
f=++a II ++b && ++c ;
printf("。,.-",a,b,c,f);

请问为什么a=2,而b和c却还是1

因为你这个判断是或运算,f=++a,这时候 这时候 a已经等于 2 了,判断为 true ,于是后面的就不计算了,直接打印输出了,求采纳

因为++a的结果肯定不是0,所以或表达式的结果肯定是1,后面的表达式就不计算啦。
类似的还有&&,比如
int a=0,b=1;
int c = a && ++b;这里++b也不会执行,因为a为0,&&的结果肯定为0

后面的短路了,
++a先自增,此时a=2 大于0,为true,逻辑运算中:真或任何情况,结果都是真,前面++a已经是真了,结果肯定是真,所以不会再进行后面的运算了
所以最终只计算了++a,f=真 也就是f=1 其他变量的值不变