c语言 若有定义语句 int b = 2; 则表达式 ( b<<2 ) / ( 3 || b )的值是

如题所述

我感觉这题答了以后 采纳率又会下来。。。

2 的二进制形式 0010
b<<2 = 1000 = 8;
3||b =3||2 =1;
所以最后的表达式的值就是 8

至于你说的为什么3||b =1.。。

首先你得分清 || 与 | 运算。
| 是按位或 就是你说的 011 | 010 后结果为 011
而在|| 的世界里,只认两个值 0 和 1。 即真和假
所有非零值 都会 被当成1 来 运算,零就是零。
所以 3||b 3被认为是1来进行运算的,即真值。一个真||(真/假)均为真。
所以3||b的值就是 真,就是1. 这个高中数学里都用的吧。。那叫什么逻辑命题来着。真真假假的,其实是一个东西。

另外

if while 里面的判断条件 也和上面类似
if(b) 那么b只要是非零都被认为是真 就是1 就会执行,0就不执行。
例如
while(3)
{
}
这也是个死循环,而不是 只有while(1)才会无限执行。。。3也是非零值,就被当做真值。
可能初学时候你们if的判断还只写作表达式的形式
if(a==b) 其实也是一样的 。 a==b a>b a<b 都会返回一个真假的值,这个值叫布尔类型。
bool 其实就是char类型 占8字节。只不过这里的值 只能有 0和1.两个

为了拿到采纳率 所以多写点,虽然比较无关。。。
bool c;
c =(a==b);
会判断 如果a和b相等,那么值就为1,赋值给c 不等就为0 赋值给c。
这也是if (a==b) 如果相等就执行的一个原因。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-19
搞定运算符的意思即可,8追问

3||b为什么等于1,||不是逻辑或吗

追答

两个非零值或为1

追问

对啊 3||b,b等于2,就是011和010,逻辑或不就是011吗

追答

实际上你搞混了,||是逻辑运算符,你那么做都是错的,|才是按位或。

第2个回答  2013-09-19
b<<2 = b*4 = 8
3||b = 1
(b<<2) / (3||b) = 8追问

3||b为什么等于1,||不是逻辑或吗

相关了解……

你可能感兴趣的内容

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