当a不等于b的时候也可能为真啊,比如0101&0001,这个结果肯定不是0啊,那究竟如何判断呢???
注意按位与&与逻辑与&&的区别。
1、对于&,是将左右操作数以二进制的表示方式,对应位进行“与”操作,都为1时,结果为1,否则为零。
15 & 8可表示为
1111
1000
-------
1000
结果是8
2、对于&&,是将左右两个操作数看作是逻辑变量,0为“假”,非零为真。两个数都为“真”(非零)时,结果为真,否则结果是假。
1、对于&,是将左右操作数以二进制的表示方式,对应位进行“与”操作,都为1时,结果为1,否则为零。
15 & 8可表示为
1111
1000
-------
1000
结果是8
2、对于&&,是将左右两个操作数看作是逻辑变量,0为“假”,非零为真。两个数都为“真”(非零)时,结果为真,否则结果是假。
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-11-25
很好判断:
a&b
首先把a和b都转换成,然后按位相与。结果是0为假,结果非0为真。
比如你说的
0101
0001
&
0001
结果为1,if为真追问
a&b
首先把a和b都转换成,然后按位相与。结果是0为假,结果非0为真。
比如你说的
0101
0001
&
0001
结果为1,if为真追问
if (filp->f_flags & O_NONBLOCK) /*不能以非阻塞读取*/
return -EAGAIN;
上面是实例中的程序,那个判断是不是应该判断两个值是否相等呢
O_NONBLOCK 是宏定义的吧,如果它们非0并且相等的话&运算肯定是真的。
本回答被提问者和网友采纳第2个回答 2013-07-12
a&b的值为0的话就为假,否则为真
第3个回答 2013-07-12
零值为假 ,非零值为真