设int x;当x的值分别是1、2、3、4时,表达式(x&1==1)?1:0的值分别是? 急~!

作者&投稿:慎裕 (若有异议请与网页底部的电邮联系)
设int x;当x的值分别为1,2,3,4时,表达式(x&1==1)?1:0的值分别~

(x&1==1)?1:0
中 x&1是判断x是奇数还是偶数,如果x是奇数那么x&1的值就是1,如果x是偶数那么x&1=0;==是判断当x&1=1时,(x&1==1)就是正确的,后面的问号意思是如果前面正确就取值1,如果错误就取值0,当x=1时,x是个奇数,所以x&1=1这个判断正确,所以整个值就是1,当x=2时,x&1=0不等于1,错误,这个式子的值就取后面的0.
所以结果就是 1,0,1,0

‘,’这是逗号运算符,x=(1,2,3,4)这是逗号表达式。


逗号表达式的一般形式可以扩展为:

x=(表达式1,表达式2,表达式3,...,表达式n);

它的值为表达式n的值;

其实,逗号表达式无非是把若干个表达式“串联”起来。

比如:x=(1,2,3,4);

分解开就是:x=1;x=2;x=3;x=4;最终结果是x=4;

但要注意优先级问题(逗号运算符是所有运算符中级别最低的)

比如:x=(a=3,6*3);
x=a=3,6*3;

以上两个表达式的结果是不一样的,

第一个是x=18
先计算括号中的a(a=18),在计算赋值语句x=a(x=18)
第二个是x=3
由于‘=’优先级高于‘,’,所以先计算x=a(x=3),在计算逗号表达式,即a=18;

在许多情况下,逗号表达式最常用于循环语句(for语句)中

比如:for(s=0,i=0;i<100;i++)

(x&1==1)?1:0
中 x&1是判断x是奇数还是偶数,如果x是奇数那么x&1的值就是1,如果x是偶数那么x&1=0;==是判断当x&1=1时,(x&1==1)就是正确的,后面的问号意思是如果前面正确就取值1,如果错误就取值0,当x=1时,x是个奇数,所以x&1=1这个判断正确,所以整个值就是1,当x=2时,x&1=0不等于1,错误,这个式子的值就取后面的0.
所以结果就是 1,0,1,0

这相当于通过位与运算。判断一个数是不是偶数了。

1,0,1,0

该表达式进行的是位运算,&是按位与,x&1是进行x,1的二进制相与的运算。

当x被赋予1时的运算
00000001
&00000001
得00000001
以此类推,希望LZ自己看下位运算的内容。

这个问题,我想如果你
了解
条件运算符
和按位与运算的话,你是可以做出来的。你可以看一下,谭浩强
C程序设计 我想你会知道的。