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