这个if是从哪里先执行,c++是先试用后++,if为假为什么还执行printf,有da神能帮忙解释这一题吗。
a++&&(b+=a)||++c
a++,(a++)这一表达式值为0,同时a自增为1,所以&&后面的表达式(b+=a)短路不执行,b仍然是0,++c,(++c)c自增为1,表达式值为1.
所以整体表达式值为1,为真
在这个 if 语句中 ||(或)的优先级最高,而最右边的++c优先级也比c++高,所以其实条件是成立的
输出101是因为a++虽然优先级较低,但是他早晚都要加1的呀,这边的c也加的一,b不变,所以输出的就是1 0 1 了
我的理解是1.(b+=a)号优先级最高先执行为假,2.执行++c为真,3.在执行a++,a++不是先使用后++吗?0为假,整个逻辑&&都为0if为假