int x =1,y = 2,z= 2; ++x && y-- || ++z; printf("%d,%d,%d",x,
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 01:24:16
int x =1,y = 2,z= 2; ++x && y-- || ++z; printf("%d,%d,%d",x,y,z);
麻烦解释一下为什么是2,1,2.,为什么不是2,2,2
麻烦解释一下为什么是2,1,2.,为什么不是2,2,2
因为在一个表达是里面,牵涉到多个逻辑运算符,逻辑运算符的优先级都是不同的,&&的级别比||高,因此先计算&&.
&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值.如 a = 0 && b++,&&运算符的左边位0,整个&&表达式就能确定为假,则右边表达式b++就不再判断;再如a=1 || b++,因为a=1就能使整个||表达式的值为真所以b++就不执行.
上面的也是同理,++x = 2,逻辑与表达式不能确定是否为真,所以在计算右边的y-- = 1,此时即++x && y-- = 2 && 1 = 1,也就是
++x && y-- || ++z = 1 || ++z,表达式右边就不用计算了,所以z = 2
结果输出2,1,2
再问: int i = 10, j = 20, k; k = i - j ? i + j : i - 3 ? j : i; printf("%d, %d, %d", i, j, k);能帮看一下吗?刚才那个就是卡在了,如果y=2的话, a=y--; 结果a= 2 和y--, 结果就是 y= 1
再答: k = i - j ? i + j : i - 3 ? j : i; 这个是问号表达式,首先看k = i-j = -10,非零即真,所以表达式的值等价于冒号前面的,即i+j输出为i,j,k的值-10,10,20
如果y=2的话, a=y--; 表达式中y--,--是后置的,所以对这个表达式是先取y的值赋给a,在对y进行y--操作,所以结果a= 2 和y--, 结果就是 y= 1
如果a = --y,情况就不一样了,就是先算--y = 1,再把y赋给a,a = 1
&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值.如 a = 0 && b++,&&运算符的左边位0,整个&&表达式就能确定为假,则右边表达式b++就不再判断;再如a=1 || b++,因为a=1就能使整个||表达式的值为真所以b++就不执行.
上面的也是同理,++x = 2,逻辑与表达式不能确定是否为真,所以在计算右边的y-- = 1,此时即++x && y-- = 2 && 1 = 1,也就是
++x && y-- || ++z = 1 || ++z,表达式右边就不用计算了,所以z = 2
结果输出2,1,2
再问: int i = 10, j = 20, k; k = i - j ? i + j : i - 3 ? j : i; printf("%d, %d, %d", i, j, k);能帮看一下吗?刚才那个就是卡在了,如果y=2的话, a=y--; 结果a= 2 和y--, 结果就是 y= 1
再答: k = i - j ? i + j : i - 3 ? j : i; 这个是问号表达式,首先看k = i-j = -10,非零即真,所以表达式的值等价于冒号前面的,即i+j输出为i,j,k的值-10,10,20
如果y=2的话, a=y--; 表达式中y--,--是后置的,所以对这个表达式是先取y的值赋给a,在对y进行y--操作,所以结果a= 2 和y--, 结果就是 y= 1
如果a = --y,情况就不一样了,就是先算--y = 1,再把y赋给a,a = 1
int x =1,y = 2,z= 2; ++x && y-- || ++z; printf("%d,%d,%d",x,
int x=3,y=2,z=1;printf("%d\n",x/y&~z)
c语言:main()?{int x,y,z;?x=y=1;?z=x++,y++,++y;?printf("%d,%d,%
int x,y,z; x=y=1; z=x+y,y++,++y; printf(%d,%d,%d\n,x,y,z);
int x=2,y=2,z=0,a; a=++x||++y&&z++; printf(″%d,%d,%d\n″,x,y,
main( ) { int x=010,y=10,z=0x10; printf(“%d,%d,%d\n”,x,y,z);
int x,y,z;x=y=z=3;y=x++ -1;printf("%d\t%d\t",x,y);y=++x -1;p
void main(){int x=1,y=3,z=5;printf("%d",z>y>x);}
已知x,y,z均为int型变量. x=y=z=-1; x++&&--y&&z--||--x; printf("x=%d\
#include main() { int y=3,x=3,z=1; printf("%d%d\n",(++x,y++)
#include int main (){ int x,y,z; m=x+y+z=10; printf("sum=%d\
main() { int x,y,z; x=3;y=z=4; printf("%d,",(z>=y>=z)?1:0);