您的位置:首页 > 其它

使用bool 类型变量赋值时的一个错误

2008-11-05 11:57 399 查看
bool 类型的变量通常只有true和false两个值,使用的时候,我通常

bool vaule = true;

value = true;

value = false;

if ( value )

...

这样写没有任何问题,有时碰到特殊方法给bool类型变量赋值时就可能出错,比如写成下面这样

bool value;

char a = 3;

memcpy ( &value, &a, 1 );

if ( value )

cout << "true";

else

cout << "false";

value= !value;

if ( value)

cout << "true"

else

cout << "false"

按道理第一次是非0的,取反后第2次应该是0,即false,但并不一定如此,不同编译器会有不同结果,比如gcc就会是true,查看数值为2,应该是只把最低位取反了。在vc上没这个问题。

除了memcpy外,从文件读取一个bool的变量可能也有问题,假如文件出错的话,我就是遇到这个问题调试了半天才查出原因。

所以,当用非标准的方法给bool赋值时,最好检查一下,如

memcpy ( &value, &a, 1 );

if ( value)

value= true;

else

value= false;

这样在后面代码的使用中就不会有问题了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐