#include <stdio.h>
int main()
{
int a=3,b=4,c=5,x,y;
printf("%d\n",!(x=a)&&(y=b)&&0);
printf("%d,%d,%d",a,b,c);
return 0;
}
结果:
0
3,4,5
求运算顺序。。
1. (x=a) 运算后,x=3,表达式的值也是3
2. !(x=a) <==> !3 = 0
----
3. (y=b) 运算后,y=4,表达式的值也是4
----
4. !3&&4&&0 <==> 0&&4&&0 <==> 0&&0 <==> 0 (&&, 且运算,遇0得0)
----
a,b,c不变。还是3,4, 5
2. !(x=a) <==> !3 = 0
----
3. (y=b) 运算后,y=4,表达式的值也是4
----
4. !3&&4&&0 <==> 0&&4&&0 <==> 0&&0 <==> 0 (&&, 且运算,遇0得0)
----
a,b,c不变。还是3,4, 5
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-01-10
我加了这么一句printf("%d\n",y);
结果y的值不是4
可以得出先算!(x=a)
此处为假,则不再继续往下做y=b&&0了本回答被提问者采纳
结果y的值不是4
可以得出先算!(x=a)
此处为假,则不再继续往下做y=b&&0了本回答被提问者采纳