C语言短路现象

C语言短路现象


#import 

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        int a = 10, b = 20, c = 30;
        BOOL d = a > b && b++;
        BOOL e = a < b && c++;
        printf("%d\n", b);
        printf("%d\n", c);

    }
    return 0;
}

1
2
3
上面的结果:
b为20
c为31
1
2
3
4
5
6
7
8
9
当在语句BOOL d = a > b && b ++;
因为a = 10, b = 20 所以自然不成立,而后面是&& 操作符 故
不会执行后面的b++

当在语句BOOL e = a < b && c++;
因为a = 10, b = 20 成立,这个时候&&后面的内容就必须得进行操作
所以c++ 完成自增,so c = 31

同理其中&&替换成其他运算符按照相同原理判断

附一张出差唐山的图片,嘻嘻

文章目录
  1. 1. C语言短路现象
  2. 2. 附一张出差唐山的图片,嘻嘻
,