读书人

bool表达式的值能安全地当成0和1吗?解

发布时间: 2012-05-16 23:40:10 作者: rapoo

bool表达式的值能安全地当成0和1吗?
我想弄一个掩码列,表示一系列条件的组合:

C/C++ code
unsigned char state = 0;state |= a<b;state |= (c<d) << 1;state |= (e<f) << 2;//......if (state == 0xXX) {}else if (state == 0xYY) {}else if (state == 0xZZ) {}//......


那么,我可以安全地把bool表达式的值作为0和1用吗?

[解决办法]
可以,安全.


[解决办法]
false可以认为是0,但是true只能认为是非0,安全起见最好加上掩码。
state |= (a<b) & 1;
state |= (c<d) & 1 << 1;
state |= (e<f) & 1 << 2;

[解决办法]
false可以认为是0,但是true只能认为是非0。如果你想用true作为1的话需要小心点了。

[解决办法]
探讨

false可以认为是0,但是true只能认为是非0。如果你想用true作为1的话需要小心点了。

[解决办法]
true/false可以安全的当做1和0.但是有更好的适合阅读的方法
C/C++ code
union flags{    struct    {        bool state1: 1;        bool state2: 1;        bool state3: 1;        bool state4: 1;    }field;    unsigned long mask;};flags f;f.field.state1 = a < b;f.field.state2 = c < d;f.field.state3 = e < f;cout<<f.mask<<endl;
[解决办法]
不知道是不是标准
不过vs和gcc中 ture都是1

读书人网 >C++

热点推荐