如题所述
在C\C++语言里在参考逻辑运算时:非0数值为true,否则为false。
同时在C\C++里true和false隐含的值分别是1和0.
所以 true&&true=true 真真为真 只要同时为真才为真,否则为假。 所以结果就是0x01=1=true追问
同时在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追问
如果是一个&,当&操作符两边的表达式不是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,都认为是真,所以为真