C++ 中的 bool 是什么?

2024-02-22

我遇到了一些非常有趣的代码,这让我想知道 bool 是什么。我一直认为它是原始类型,例如 int 、 char 或 long 。但今天,我看到了这样的东西:

void boolPtrTest()
{
    bool thisBool = true;

    boolPtrHere(thisBool);

    printf("thisBool is %s\n", thisBool ? "true" : "false");
}

void boolPtrHere(bool& theBool)
{
    theBool = false; // uhh, dereferencing anyone?
}

这段代码运行 - 没有错误 - 并打印“thisBool is false”!

为了进一步使这个奇怪,我运行了以下代码:

bool myBool = new bool();

...代码运行良好!

在你因为我问了一个“菜鸟”问题而对我投反对票之前

这是我的问题:什么is布尔?它是在逐个实现的基础上定义的吗?从上面显示的证据来看,我会说这是一个类。从实际的角度来看(忽略上述内容),将 bool 定义为 int / char 的 typedef 或将其#define'd 似乎也是合适的。但人们如何知道它是什么(这会影响你如何对待它)?

编辑:我想我应该补充一点,我正在 VS 2008 中工作。


我只是没有看到你所描述的“奇怪”。

你声明一个bool,初始化为true。 通过调用函数并通过引用传递它,您可以将其值更改为false.

然后你打印出这个值,它就起作用了。 问题是什么?更准确地说,有什么证据表明发生了奇怪的事情?

既然你想了解详情,bool可能是一个字节(char) or an int。 当您为其指定 true/false 时,它​​会获取值 0 或 1。(使用sizeof and printf("%d")来检查它)。

我怀疑真正的问题是你不明白引用传递 of boolPtrHere。你是not传递一个指向 bool 的指针。您正在通过内存引用传递实际值。 (将其视为不需要取消引用的指针)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的 bool 是什么? 的相关文章

  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • std::map find 在 C++ 中不起作用[重复]

    这个问题在这里已经有答案了 我使用以下几行创建了一个哈希映射和一个迭代器 std map
  • 处理器关联组 C#

    我使用的是 72 核的 Windows Server 2016 我看到有两组处理器 我的 net 应用程序将使用一个或其他组 我需要能够强制我的应用程序使用我选择的组 我看到下面的代码示例 但我无法使其工作 我可能传递了错误的变量 我希望应
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 如何配置 Ninject 来注入 NodaTime IClock

    在我的 NinjectConfigurator 中我有 container Bind
  • 如何在 Google Mock 中使用可选参数来模拟方法?

    如何使用可选参数模拟方法谷歌模拟 例如 class A public void set enable bool enabled true class MockA public A MOCK METHOD1 set enable void b
  • 在编译输出中添加程序集绑定 (app.config)

    如果我编译应用程序 则会在输出中自动添加程序集绑定 具体的程序集绑定不在app config在 Visual Studio 中但在创建的应用程序配置中 有什么办法可以检查为什么会自动添加程序集绑定吗 选项AutoGenerateBindin
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 现代编译器的 C++ 中“memset”功能的状态

    Context 不久前 我偶然发现了 Alexandrescu 在 2001 年发表的 DDJ 文章 http www ddj com cpp 184403799 http www ddj com cpp 184403799 它是关于比较将
  • 如何通过分解 y 轴来减小 mschart 的高度

    如何降低 mschart 的高度 如下所示 编辑 就我而言 我不想查看中断图表 this chart1 ChartAreas 0 AxisY ScaleBreakStyle Enabled false 您似乎正在寻找AxisY ScaleB
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 结构大小与 typedef 版本不同?

    我的代码中有以下结构声明和 typedef struct blockHeaderStruct bool allocated unsigned int length typedef struct blockHeaderStruct block
  • 在 C 中运行 setuid 程序的正确方法

    我有一个权限为4750的进程 我的Linux系统中存在两个用户 root 用户和 appz 用户 该进程继承以 appz 用户身份运行的进程管理器的权限 我有两个基本惯例 void do root void int status statu
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • C# 使用 .Equals() 比较两个 double

    我使用 ReShaper 当我用 比较两个双精度值时 它建议我应该使用 Math 具有公差的 ABS 方法 看 https www jetbrains com help resharper 2016 2 CompareOfFloatsByE

随机推荐

  • React库如何直接需要它的源库?

    我正在查看 Facebook 的 React 源代码 发现在整个项目源代码中 他们没有指定加载自己模块的相对路径 例如 而不是做var foo require bar foobar 图书馆使用var foo require foobar 就
  • 批量插入到自引用表中

    这个问题是一部分一个更复杂的问题 https stackoverflow com questions 55047552 how to lock and unlock a sql server table noredirect 1 comme
  • 重命名 MySQL 中的外键列

    我们正在尝试重命名 MySQL 5 1 31 InnoDB 中作为另一个表的外键的列 起初 我们尝试使用 Django South 但遇到了一个已知问题 http south aeracode org ticket 243 http sou
  • 适用于运行 iOS 的 Cocoa iPhone 和 iPad 的 WebDAV 服务器

    我正在寻找适用于 iPhone 和 iPad 的 WebDAV 服务器 最好的开源服务器 以便集成到我的应用程序中 应该可以列出 下载和上传文件 我想将服务器根目录指向我的应用程序的 文档 文件夹 因此如果可能 这些方法应直接映射到文件系统
  • 使用 Gitolite 自动部署 PHP 脚本

    我想在本地测试服务器上设置自动部署脚本 我在 ubuntu 桌面 11 04 上使用 gitolite 我使用 apt get install gitolite 安装 gitolite 因此它创建用户 gitolite 和组 gitolit
  • 如何在 C (MacOS) 中获取进程虚拟内存映射的信息

    我想要获取有关 C MacOS 中当前进程的进程虚拟内存布局 堆栈 libc 堆和代码 的信息 我读到在 Linux 中你可以通过查看来做到这一点 proc
  • Android资源链接失败,错误:找不到属性defaultNavHost(又名...),未找到属性navGraph(又名...)

    我尝试在我的应用程序中实现导航功能 当我尝试构建应用程序时 输出显示 Android resource linking failed home mateusz AndroidStudioProjects TakeAndTie app src
  • 从 PowerShell 调用 Windows Shell 函数?

    所以我正在遵循这个教程 https msdn microsoft com en us library windows desktop hh127427 v vs 85 aspx https msdn microsoft com en us
  • iPhone 摄像机流媒体

    谁能确认这样的应用程序是如何完成的 袖珍相机 http www senstic com iphone pocketcam pocketcam aspx 是使用AVFoundation捕获摄像头视频流的方式吗 http developer a
  • 如何将选定的 HTML 转换为 Json?

    我想将部分 html 代码作为文件保存到 json 中 然后回顾 html 代码进行编辑 知道我该怎么做吗 div div div div
  • 如何将 c++filt 与 llvm-cov 报告一起使用?

    我正在尝试将 demangler 与 llvm cov 报告工具一起使用 以下是我正在运行的命令 llvm cov report path to executable instr profile path to default profda
  • 根据分组 ggplot2 条形的着色和阴影/纹理[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个条形图 就像下面的示例数据和脚本一样 对 4 个个体在治疗前后进行测量 抱歉 我没有足够的声誉来上传示例图片 我想用某种颜色绘制个体 例如汤姆为绿色 弗雷德红色等 但对于代表治疗的条形 我想在颜
  • 我是否应该尽可能在 C++11 中将“const int”替换为“constexpr int”?

    你会替换吗 const int one 1 const int two 2 有了这个 constexpr int one 1 constexpr int two 2 我的理解是否正确 两个块在语义上是相同的 并且目前只是一个品味问题 另一方
  • 如何通过 C# 方法使用 IronRuby 块

    我正在使用 IronRuby 并尝试找出如何通过 C 方法使用块 这是我尝试模拟的基本 Ruby 代码 def BlockTest result yield hello puts result end BlockTest x x world
  • Listview/DetailsView:隐藏空字段

    我想这是一个很常见的问题 但到目前为止我还没有找到一个优雅的解决方案 我有很多实例 其中有绑定到 SQL Server SPproc 的 ListView 或 DetailsView 控件 我遇到的问题是 在很多情况下 当列为空时 我想在
  • 如何使用 CSS 旋转导航栏中的元素?

    我试图让我的导航栏在我的 WordPress 网站中旋转 但无法使其居中并靠近屏幕左侧 这是我现在得到的屏幕截图 这是我正在使用的 CSS 代码 nav standard position fixed webkit transform ro
  • Hyperledger Composer Web 应用程序用户身份验证

    我已经使用 Hyperledger Composer 创建了一个业务网络 并且创建了一个简单的 Web 应用程序 用于添加参与者并使用 Angular 通过 Web 界面提交交易 另外 我已经使用护照启用了 REST 服务器的身份验证 并且
  • 在 Access 中创建 Outlook 收件箱电子邮件表

    UPDATE 下面的当前代码符合推荐的 SQL 构造 SqlString 中的错误 运行时错误 3011 Microsoft Access 数据库引擎找不到对象 请确保该对象存在 并且正确拼写其名称和路径名 如果 不是本地对象 请检查您的网
  • Tweepy OpenSSL.SSL.WantReadError

    Python 3 6 我使用 tweepy 的 Streamer 来获取推文 效果很好 但有时 如果我让它打开超过 24 小时 就会出现此错误 Traceback most recent call last File C ProgramDa
  • C++ 中的 bool 是什么?

    我遇到了一些非常有趣的代码 这让我想知道 bool 是什么 我一直认为它是原始类型 例如 int char 或 long 但今天 我看到了这样的东西 void boolPtrTest bool thisBool true boolPtrHe