main()
{
int x,y,z,t
scanf("%d%d%d",&x,&y,&z)
printf("交换前:a=%d,b"%d,c=%d\n",x,y,z)
t=x
x=y
y=z
z=t
printf("交换后:a=%d,b"%d,c=%d\n",x,y,z)
}
有什么问题,请留言。
顺序是从左往右,这样写也是合法的,只不过结果未必是你想要的结果。它相当于(x>=y)>=z
括号里的值是0或1,结果就是0或1 再和z 比较。
如果想表示x≥y≥z ,
(x>=y)&&(y>=z)
先说明,该题采用很糟糕的书写风格,难以理解,难以维护,难以纠错。由于表达式之间没有用()明确操作,所以操作符的优先级采用C语言的缺省设定。这里主要涉及以下几个操作符:
>= 比较运算符
&&逻辑与运算符
?: 三操作数的条件运算符
优先级如下:
“>=” >“&&” >“?:”
因此该表达式可以改写成:
(x>=y)&&(x>=z)?x:(y>=x)&&y>=z?y:z
继续:
((x>=y)&&(x>=z))? x : ((y>=x)&&y>=z) ? y : z
因此,题目的语义是:
取x, y, z中的最大值。相当于:
max(x, y, z)