在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
 

就是这样。

温馨提示:内容为网友见解,仅供参考
无其他回答

在c语言中n=(x&0xff)&&(y>'B')的意思,,,求详解
\/\/( 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 00...

C语言中(x&15)的意思
其实呢,这个式子也可以写成x&0xf,0xf就是十六进制里的15,0x开头的数字串在一般的程序语言里就是十六进制,如果对于大于15的数,因为15从右数第五位开始就为0了,比如可以写成00001111,所以如果一个比15大的数与15相与,就结果就只留下了这个数的低位的4位右数4位),比如二进制10100011与15相...

C语言中编程时那些%d &之类的什么时候用啊?求详解!
a=b & c;

求详解,另外z=z(x,y)是什么意思,这种题应该怎么算
2013-09-19 设z为二元函数z=z(x,y),满足一个条件,求z=z(x,... 2 2013-06-01 偏导数中说一个函数由另一个函数确定这句话是什么意思,比如说z... 5 2016-01-16 C语言中,比如z=(x%y,x\/y)括号的运算什么意思,能解... 10 2020-09-12 z=(x\/y,x*y)什么意思 2016-02-24 概率论问题...

C语言中,==和=的用法,求详解
而=是将等号右边的值赋给等号左边的变量。==常用于if的判断语句中,而等号则不用于if的判断语句中。你可以这样写if(a==0){...}意思是:如果a=0成立则执行if的函数体,否则不执行!在这里,a==0不能写成a=0.这就是两者在C语言中的最主要的差别了。希望对您有所帮助!

c语言 求详解
参数是一个大小为5的整形数组,函数的功能是接受用户输入5个数。所以横线上应该是数组元素的地址。x表示首地址,x+m就是第m+1个元素的地址,所以选D。谢谢

C语言问题求详解
而&是按位与运算符,对于a&b,每次都要执行表达式a与表达式b,且a&b的结果是由按位运算计算后确定的,不只有0和1。对于对应位置的比特位1&1=1,1&0=0,0&1=0,因此,2&&2的结果是1,2&2的结果是2。计算2&2的过程如下:00...010(2的2进制表示)2&2=00...010&00...010=00......

C语言:这道题中flag是什么意思?画圈的语句不明白,求详解,谢谢
前面一句flag=……中的flag是表示“当前字符是英文字母”。而后面一句if(flag),从再后面执行的程序(strcpy ...)来看,明显的是删除当前字符的语句,所以只能是当前字符不是英文字母时出现的操作,if语句的含义应该是if(不是英文字符)。根据c语言对逻辑值的定义,假设当前字符是英文字符,前面是取值...

C语言求详解
这个详解是什么意思啊。。。最终结果是不是n=1啊。。。while中,有个switch!最开始,k=5,没有这种情况,default,然后k=k--1=4,再switch,还是没有,default,k=k-1=4-1=3,以此下去,最后k=1时switch,执行case 1:n+=k,即n=n+k=0+1=1,然后k=k-1=1-1=0,此时不符合k>0...

这里的 oxff和oxfe什么意思 求大神详解 转化为2进制之后是11111111和111...
其实就是16进制转2进制而已。1)凡是以0x开头的数字都是十六进制,例如0x ff,ff是值。2)16进制的表示1~9和十进制一样,但是10~15分别用A,B,C,D,E,F表示。2)16进制转二进制是 把一位当4位。ff就可以拆位 f(1111) f(1111)所以就是1111 1111B.其中B表示二进制 ...

相似回答