1个回答
展开全部
1、因为逻辑运算是“左结合律”和“ 短路求值 ”的,另外C语言保证逻辑运算的求值顺序是从左往右的。
2、第一个printf()没什么好说的,赋值如此,所以x=-1 y=-1 z=-1
3、第二个printf(),x=-1 y=0 z=0,要说明一下:
++y&&++x||++z;它的运算过程先算++y它的值为0,决定了++y && ++x的逻辑值为假,根据短路求值++x将不再参与运算,所以这里++x没有执行,所以x=-1,左边既然是假,逻辑或的右边就要参与运算,所以++z是要执行的,所以z的值为0。
4、++x||y++&&z;首先计算++x,它的值为0,所以要执行y++的运算y++,y的值为-1,要执行z的运算,z没有运算,所以z是-1,执行完++x||y++&&z;语句后,y++执行,所以这时y的值为0,那么下面打印的就是x=0 y=0 z=-1。
2、第一个printf()没什么好说的,赋值如此,所以x=-1 y=-1 z=-1
3、第二个printf(),x=-1 y=0 z=0,要说明一下:
++y&&++x||++z;它的运算过程先算++y它的值为0,决定了++y && ++x的逻辑值为假,根据短路求值++x将不再参与运算,所以这里++x没有执行,所以x=-1,左边既然是假,逻辑或的右边就要参与运算,所以++z是要执行的,所以z的值为0。
4、++x||y++&&z;首先计算++x,它的值为0,所以要执行y++的运算y++,y的值为-1,要执行z的运算,z没有运算,所以z是-1,执行完++x||y++&&z;语句后,y++执行,所以这时y的值为0,那么下面打印的就是x=0 y=0 z=-1。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询