int m=1,n=-1;printf("%d\n",(m--&++n));输出结果

如题所述

m--==1, ++n==0; 00000001
& 00000000
00000000
所以结果为0
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-21
结果为0
++n为0,什么数跟0按位与都为0
第2个回答  2011-04-21
0
m--为0;;++n为0;
0&0 按位与 为0
第3个回答  2011-04-21
k=(n=b>a)||(m=a<b);
其实就是在考察运算符的优先级,以及逻辑运算符 或
关系运算符 >大于赋值运算符 所以 b>a为1 (2>1)
所以此时n=1 ,再看右边也是一样的, 所以m=1( 1<2 ??不成立为0),
所以现在就成了 k=1||0 因为是或运算所以此时k=1,,所以此时输出 1,1
但是此时你别忘了,m=a<b,在执行玩了或运算后,此时赋值消失(m=a<b),所以此时m还是为零的,,,
关系运算符, 你看 a=2,b=5,
printf("%d",(2>5)) 此时输出0,因为2不大于5,在c中,不为零的值都表示真,反之假,
相似回答