C语言的逻辑运算 0x66&&0x39 结果是? 怎么计算的?

如题所述

在C\C++语言里在参考逻辑运算时:非0数值为true,否则为false。
同时在C\C++里true和false隐含的值分别是1和0.

所以 true&&true=true 真真为真 只要同时为真才为真,否则为假。 所以结果就是0x01=1=true追问

x=0x66
y=0x39
x&&~y 不应该等于0吗?怎么会等于1呢?

追答

十六进制x=0x66==>二进制1100110==》十进制102

十六进制y=0x39==>二进制111001==》十进制57
~y按位异或后:
111001
000110
按位异或后结果是:二进制000110==》十进制6

x&&~y
102&&6不是为true(1),那你说是什么?

建议楼主把逻辑运算符这些基础知识搞透先。按理说楼主既然懂位运算,那么不可能不懂逻辑运算符的啊?

追问

明白了,, 我把~这个搞混了。

追答

Well,明白就好,严谨点就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-01
如果是两个&,那么结果为true
如果是一个&,当&操作符两边的表达式不是boolean类型时,&表示按位与操作

0x66 = 0x01100110
0x39 = 0x00111001
结果为 0x00100000 = 0x20追问

一个&的话我会计算
但是&&的话结果为0x01 是怎么计算出来的?对这两个数怎么操作?

追答

两个&&基本上是判断正确错误用的

全正确为true,有一个错为false
true = 非0,默认1
false = 0
左右都为非0,所以正确,赋默认true值1

第2个回答  2014-12-01
左边是真,右边也是真,结果为真,即true
第3个回答  2014-12-01
0x代表16进制数,左右都是16进制数,其实无所谓,&&的两边只要不是0和flase,都认为是真,所以为真

相关了解……

你可能感兴趣的内容

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