【发布时间】:2017-10-06 13:31:19
【问题描述】:
#include <stdio.h>
//Compiler version gcc 6.3.0
int main(void)
{
int i=10, j=2, k=0, m;
m=++i || ++j && ++k;
printf("%d,%d,%d,%d",i,j,k,m);
}
谁能解释一下逻辑,输出是11,2,0,1
【问题讨论】:
-
您是否尝试过在纸上阅读?你知道“短路评估”吗?
-
@Caleb 一点也不,这里的一切都是有序和明确的。
-
@Caleb 此代码定义明确,UB 或序列点没有问题。
标签: c logical-operators logical-or