c++如何处理布尔类型

无尽大海 2010-10-23 01:24:13
c++中bool和int都属于整型,可以相互转换,在代码中使用一个布尔类型时,编译器是如何处理它的呢,是当做int型处理,还是有其他机制呢?
...全文
370 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxxer 2010-10-23
  • 打赏
  • 举报
回复
bool类弄在c++中只有两个常量true与false.如果与其他表达大混合使用则要按照表达式的提升规划来提升。
baihacker 2010-10-23
  • 打赏
  • 举报
回复
1. bool的大小,一般会是1,但是标准没有明确规定占用空间大小。
2. 类型转换,一个算术,枚举,指针,指向成员的右值,可以转换为bool。
零,null pointer, null member pointer 可以转为false,其它的是true
3. true可以提升为1,false可以提升为2。
4. ++可以把一个bool型的设置为true,而--不能作用在bool型的上。
shexinwei 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ch1308 的回复:]
bool类型相当于枚举类型,里面只有false和true两个常量,默认情况下false=0,true=1,是吗?
[/Quote]

可以这么理解。
bool类型一般用一个字节存储,int根据平台不同,大小不同。

一般在结构体中,bool只是二值的,用一个字节有点浪费空间,会使bool只占一位。


struct St
{
bool flag :1 ; //此处变量flag将只占二进制的一位。
·
·
·
};
kkk 2010-10-23
  • 打赏
  • 举报
回复
实际上:cout<<sizeof(bool)<<" "<<sizeof(int);输出1 4
gules 2010-10-23
  • 打赏
  • 举报
回复
bool类型虽与int类型可以互相转换,但那只发生于算术与逻辑表达式中;在这样的表达式中,C++会把bool转换为int然后进行运算,再把结果转回到bool类型——取值要么true,要么false。

在以类型作为重载机制的函数参数中,bool与int还是区分的。
无尽大海 2010-10-23
  • 打赏
  • 举报
回复
bool类型相当于枚举类型,里面只有false和true两个常量,默认情况下false=0,true=1,是吗?[Quote=引用 1 楼 shexinwei 的回复:]
bool 类型只有两种值,true 或者 false;

int 的值域lz应该知道吧(与平台有关)


试一下以下代码:

C/C++ code

bool b = true;
cout<<"b = "<<b<<endl;
b+=5;
cout<<"b = "<<b<<endl;



会得到两次都是1的结果。
[/Quote]
liutengfeigo 2010-10-23
  • 打赏
  • 举报
回复
没研究到这个水准
shexinwei 2010-10-23
  • 打赏
  • 举报
回复
bool 类型只有两种值,true 或者 false;

int 的值域lz应该知道吧(与平台有关)


试一下以下代码:

bool b = true;
cout<<"b = "<<b<<endl;
b+=5;
cout<<"b = "<<b<<endl;


会得到两次都是1的结果。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧