嗨,我对逻辑运算符有点困惑。
根据KNK C第5章练习3-4。
int i=1;
int j=1;
int k=1;
printf("%dn",++i || ++j && ++k);
printf("%d %d %d",i,j,k);
由于短路评估,我认为结果是 1 2 1 2 比如((++i || ++j) && ++k )。
但答案是 1 2 1 1。
为什么变量 k 会增加?
来自 C 运算符优先级:
优先级 | 运算符<<thead> |
---|
关联性 |
&& |
逻辑和 | 从左到右 |
|| | 逻辑或 | 从左到右 |