在c语言中n=(x&0xff)&&(y>'B')的意思,,,求详解

如题所述




//我们来看一个问题,可以帮助你理解

执行下面的程序段 

int x = 40; 
char z = 'B';
int B;
B = ( ( x&0xff )&&( z>'a' ) );后

B的值为( )

正确答案是 0.
下面我给你解释。
 
//( x&0xff ) 
OX的意思是16进制
OXFF代表的2进制是  0000 0000 1111 1111
那么 x&0xff  表示 将x的值和上面的二进制数 相与
比如 x = 40,那么它对应的2进制为  0000 0000 0010 1000
它和 0xff 相与还是 40 ,也就是

   0000 0000 1111 1111 
&  0000 0000 0010 1000 
-------------------------
   0000 0000 0010 1000 

// ( z > 'a' ) 
那么对于字符 z, 它的初始值为'B'
那么 z > 'a' 这个表达式的值为假
为什么呢,
因为在ascii码中, 'B' 的ascii为 66, 而 'a'的 ascii为 97
因为 97 > 66, 所以 z < 'a' 而不是 z > 'a'
故表达式 (z > 'a') 的值为false

//&&运算
&& 的左边是40 , 在C语言中 0 代表false 而非零的数代表true,那么左边为true
&& 的右边是 false  
那么整个表达式的 值 肯定为 false。
 
所以最后 B = 0
 

就是这样。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网