天鸽哥 发表于 2018-2-28 21:53:39

这个语句的逻辑是怎么回事?++a||++b&&++c,原码如下

#include <stdio.h>

int main(void)
{
        int a, b, c;
        a=b=c=1;

        ++a||++b&&++c;

        printf("a=%d        b=%d        c=%d\n", a, b, c);
        return 0;
}

lyjlyj 发表于 2018-2-28 22:07:44

先算++a,a变成2,2是真,所以后面++b&&++c不会执行
逻辑或运算,当左边的为真时,右边的不会执行,如:a=1;b=0 ;a||b++,b++不会执行,若b||a++,由于b=0为假,就会执行a++

天鸽哥 发表于 2018-2-28 22:25:15

lyjlyj 发表于 2018-2-28 22:07
先算++a,a变成2,2是真,所以后面++b&&++c不会执行
逻辑或运算,当左边的为真时,右边的不会执行,如:a= ...

膜拜大神

风扫地 发表于 2018-3-5 20:17:13

遵循逻辑运算的“短路规则”,考试的时候弄明白就行。在实际工作中,最好不要出现这种代码:可读性差,不易于理解。
页: [1]
查看完整版本: 这个语句的逻辑是怎么回事?++a||++b&&++c,原码如下