C++中bool的返回值只有0或1嘛

詹姆斯奶奶 2021-02-09 02:43:33
为什么在判断两者相等时的bool返回值是2?bool值什么时候不是0或1?在全局函数中没有错误的 可是在成员函数却无法进行是为什么??


class cube {
private:
int L;
int W;
int H;
public:
void setL(int l)
{
L = l;
}
void setH(int h)
{
H = h;
}
void setW(int w)
{
W = w;
}
int getL()
{
return L;
}
int getH()
{
return H;
}
int getW()
{
return W;
}
int scare()
{
return 2 * (L * H + L * W + H * W);
}
int tiji()
{
return L * H * W;
}
bool compare1(cube& c)
{
if (H == c.getH() && L == c.getL() && W == c.getW())
return true;
else false;
}
};
int main()
{
cube c1;
c1.setL(2);
c1.setH(2);
c1.setW(2);
cout << "面积为:" << c1.scare() << endl;
cout << "体积为:" << c1.tiji() << endl;
cube c2;
c2.setL(2);
c2.setH(2);
c2.setW(3);
if (c2.compare1(c1))
cout << "相等" << endl;
else cout << "不相等" << endl;
}
...全文
1506 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
[PE]经典八炮 2021-03-04
  • 打赏
  • 举报
回复
我的想法是,bool在内存中占1字节,也就是8位二进制,而bool只需要一位二进制就能表示了,所以其它7位会保留这块内存原来的值。 假如,一个其它程序有一句
int a=4;//二进制是0000000......100
a的地址是0x000...00a00,这个返回值的地址是0x000...00a03,如果只初始化最后一位,会变成0000000......101,即5。这个情况应该也差不多,我调试有一次还四百多
詹姆斯奶奶 2021-02-25
  • 打赏
  • 举报
回复
明白了十分感谢!!
真相重于对错 2021-02-20
  • 打赏
  • 举报
回复
因为else false 没有return ;所以 这个函数就相当于 int func(){ } int b=func();//这里执行后b是多少?
[PE]经典八炮 2021-02-20
  • 打赏
  • 举报
回复
调试器的bug,试着cout<<c2.compare1(c1);
Keven_11 2021-02-15
  • 打赏
  • 举报
回复
引用 11 楼 yeb_www 的回复:
2不也是”真“的意思吗
也可以这样说,但在bool里面标准的”真“(true)是1
Keven_11 2021-02-15
  • 打赏
  • 举报
回复
else return false;
ybw_www 2021-02-11
  • 打赏
  • 举报
回复
2不也是”真“的意思吗
Keven_11 2021-02-10
  • 打赏
  • 举报
回复
怎么可能出现2呢?该不会是乱码吧
浪客 2021-02-10
  • 打赏
  • 举报
回复
g++的定义:
/*
 * ISO C Standard:  7.16  Boolean type and values  <stdbool.h>
 */

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

#define bool	_Bool
#define true	1
#define false	0
真相重于对错 2021-02-10
  • 打赏
  • 举报
回复
代码错误 else return false; 不是 else false;
詹姆斯奶奶 2021-02-10
  • 打赏
  • 举报
回复
引用 1 楼 真相重于对错 的回复:
哪里返回2?
看看我新发的调试图
詹姆斯奶奶 2021-02-10
  • 打赏
  • 举报
回复
chxchxkkk 2021-02-09
  • 打赏
  • 举报
回复
不是0和1,是0和非0
flying_music 2021-02-09
  • 打赏
  • 举报
回复
你应该是搞乌龙了,不可能出现2的
Simple-Soft 2021-02-09
  • 打赏
  • 举报
回复
bool值为true时,为非0,为false时为0,即只要不是0就是true
自信男孩 2021-02-09
  • 打赏
  • 举报
回复
true or false是1和0的关系,可以这么认为。
真相重于对错 2021-02-09
  • 打赏
  • 举报
回复
哪里返回2?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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