C语言短路法则

    int i=0,a=0,b=2,c=3,d=4,e=1;
    // int i=0,a=1,b=2,c=3,d=4,e=1;
    // i=a++&&++b&&d++;
    i=a++||++b||d++||++e;
    printf("a=%d, b=%d, c=%d, d=%d, e=%d",a,b,c,d,e);

a++先运算再加,++a先加再运算

a=0

i=a++&&++b&&d++

此处由于遵循a++的运算规则先运算再++,因此此处先使用逻辑与进行运算再++,因此此处先使用a=0进行运算,由于0为假所以整个逻辑与表达式都为假,因此此处不再进行后续运算。

a=1

i=a++&&++b&&d++

此处由于遵循a++的运算规则先运算再++,因此此处先使用逻辑与进行运算再++,因此此处先使用a=1进行运算,由于1为真所以整个逻辑与表达式继续进行后续运算,直到运算结束或者遇到逻辑假为止(操作数为0)。

从左至右进行时,若遇到运算符左边的操作数是 0(逻辑假),则停止运算。

 

 

a=0

i=a++||++b||d++

此处由于遵循a++的运算规则先运算再++,因此此处先使用逻辑与进行运算再++,因此此处先使用a=0进行运算,由于此处a=0所以继续进行逻辑或运算,直到运算结束或者遇到逻辑假(操作数为0)为止

a=1

i=a++||++b||d++

此处由于遵循a++的运算规则先运算再++,因此此处先使用逻辑与进行运算再++,因此此处先使用a=1进行运算,由于此处a=1所以不会继续进行逻辑或运算直接结束逻辑或运算。

从左至右进行时,若遇到运算符左边的操作数是 1(逻辑真),则停止运算。

 

记住!短路原则是 与(&&) 或(||) 才有。

posted @ 2022-05-22 01:00  xing柠檬  阅读(668)  评论(0编辑  收藏  举报