我写了以下代码:
int main(){
int i=-1,j=-1,k=0,l=2,m;
m = i++ && j++ && k++ || l++;
printf("%d %d %d %d %d",i,j,k,l,m);
i=-1,j=-1,k=0,l=2,m;
m = ++i && ++j && ++k || ++l;
printf("\n%d %d %d %d %d",i,j,k,l,m);
return(0);
}
我得到了以下结果:
0 0 1 3 1
0 -1 0 3 1
据我所知,后缀和前缀运算符在分号之后解决,即。原始值在表达式中使用,然后变量自行解析。在这种情况下
i++ && j++
应该等于
++i && ++j
两者都应该等同于
i && j;
i = i+1;
j = j+1;
因此两个表达式的结果必须相同。但事实并非如此。请任何人都可以帮助我解决我在哪里有错误的概念。