main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 19:03:58
main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf(

main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }
main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
首先 i++==1&&(++j==3||k++==3) 是一个逻辑表达式
i++==1&&(++j==3||k++==3) 分为两部分
i++==1 和 (++j==3||k++==3)
他们的关系是 并且的关系
所以 两部分都会被执行
i++==1
是先 判断i是否等于1 (因为++在后面) 此时i=1;
在这句话执行完之后i=2
然后执行第二部分
(++j==3||k++==3)
又分为两部分
++j==3 和 k++==3 两部分
这两部分是 或者的关系
如果第一部分满足条件 就不执行后面的
如果第一部分不满足条件 就执行后面的部分
++j==3
是j先自己加1然后判断j是否等于3
这部分的结果为真
所以后面的部分不执行
最后的结果为 i=2 j=3 k=3