你们给看看这个程序,怎么理解希望写的详细一点,还有输出结果是是什么?

#include<stdio.h>
int main(){
int a=0,b=3,c=2;
if(a++&&b++){
c--;
}else if(a+1==6||b--){
c++;
}
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

先执行&&
a++ && b++其中都是X++形式,所以是先取值再自加故&&运算时取得值a=0因为a=0
所以这个表达式就是0&&后面的b++b不需要计算,程序不执行故b的值不变
执行else语句
a+1==6不成立 判断b-- b=2 不为0所以执行else内部 c++ c=3

img

你用调试器单步执行就明白程序怎么运行的。

第一个IF:a++假。
a1,b3,c2。

第二个IF,a+1==6假,b--真。
a1,b2,c3。

最后:123

img


#include<stdio.h>
int main() {
    int a = 0, b = 3, c = 2;
    if (a++ && b++)        //如果a和b都不为0,则c=c-1;然后a=a+1.b=b+1。
    {
        c--;
    }
    else if (a + 1 == 6 || b--)            //如果a+1等于6或者b不等于0;则c=c+1;然后b=b-1。
    {
        c++;
    }
    printf("a=%d,b=%d,c=%d\n", a, b, c);
}
/*起始:a = 0, b = 3,先执行if(a++&&b++),因为a=0,由于&&的特殊性质:两个数进行&&操作,只要有一个为0,则结果为0。
所以不用对&&后的b++运算。因此a=a+1=1。但是判断时if条件为0,不执行;而是执行else if中的语句,
c = c + 1 = 2 + 1 = 3。b=b-1=3-1=2。此时a=1,b=2,c=3.
*/


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632