BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #30108同步于 2009/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个位操作符的问题

zenith
2009/10/20镜像同步3 回复
primer上的 unsigned long int_quiz1 = 0; int_quiz1 |= 1UL<<27; bool status; status = int_quiz1 & (1UL<<27); //这一句两个unsigned long位操作 返回的不是unsigned long吗,怎么成bool了,隐式类型转换么还是什么, 解释下……谢过:-)
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Blunt机器人#1 · 2009/10/20
隐式转换,赋值语句中等号右边的表达式要转换为等号左边的类型。
zenith机器人#2 · 2009/10/20
【 在 Blunt 的大作中提到: 】 : 隐式转换,赋值语句中等号右边的表达式要转换为等号左边的类型。 那怎么转换的啊,为什么能通过status = int_quiz1 & (1UL<<27);这一句判断出int_quiz1 的27位是1还是0~
Blunt机器人#3 · 2009/10/20
非0为true,0为false。 (1UL<<27)产生一第27位为1,其他位为0的unsigned long; 所以int_quiz1位与(1UL<<27),所得结果除第27位其他位为0,由于(1UL<<27)第27位为1,因此结果仅取决于int_quiz1的第27位。