c=a++&&(b=1);
这个复合语句是一个逻辑判断表达式
关键就在于中间的这个&&符号,当判断到该符号的第一个条件为假时,后面无论是什么条件,整个表达式的结果都为假,因此,该符号后面的条件都不会再进行计算,也就是b=1实际不会被执行。
当然,这里也要说明一下为什么a++为假,a的值为0,而a++表示先用a进行计算,然后再把a进行自增运算,因此,参与计算的a的值为0,所以导致整个表达式的结果为假。
如果你将这里的&&符号修改为||或者是把a++改为++a,那么b的值都会变成1.
&&运算的符从左边开始判断,c=a++&&(b=1),此时 a 是 0,后面就没有判断的必要了,所以b=1并没有执行。如果换成c=++a&&(b=1),时 a 先执行++操作,这时a 的值是1,后面的b=1会被执行到。
a++表达式 是先使用后之加
那么对于判断 就是0&&(b=1)
因为0为false 那么判断结束 后面的不执行
于是b还是0
如果改成++a 就不一样了 你可以测试一下
a++后置+1所以现在a=0,a=0&&(b=1) 0“与”1得出的值就是0。