当前位置:新励学网 > 秒知问答 > 00000000和0xFF之间怎样转换

00000000和0xFF之间怎样转换

发表时间:2024-07-30 08:27:01 来源:网友投稿

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

执行下面的程序段

int x = 40;

char z = 'B';

int B;

B = ( ( x0xff )( z>'a' ) );后

B的值为( )

正确答案是 0.

下面我给你解释。

//( x0xff )

OX的意思是16进制

OXFF代表的2进制是0000 0000 1111 1111

那么 x0xff表示 将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') 的值为false

//运算

的左边是40 , 在C语言中 0 代表false 而非零的数代表true,那么左边为true

的右边是 false

那么整个表达式的 值 肯定为 false。

所以最后 B = 0

就是这样。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!