今天在调试一个程序的时候出现bug,搜索两个小时,终于找出,其实bug很幼稚,主要是基础不扎实
,根源在于如题所述:bool型变量的赋值和运算
废话不多说,直接上代码
模型是:bool flags = false;
flags |= 0x2;
printf("flags:0x%0x", flags);
以前总以为bool通常就是一个字节,和char类似,大部分情况就把它当成只有两值的char变量用了,其实不然。
总结:bool变量参与运算时,按照运算规则,双目或三目运算时,通常要将bool转换成更高精度类型参与运算,但是值只能是0x0或0x1;
bool变量被赋值时(位于=左边),所有类型都先得转换成逻辑类型(0x0或0x1)
本文通过一个具体的编程实例,探讨了bool型变量在进行赋值及运算过程中的行为特点,特别是当bool变量与其他整数类型进行位运算时的表现。
1万+

被折叠的 条评论
为什么被折叠?



