gpt4 book ai didi

c++ - 为什么 `true` 和 `false` 都被认为是变量?

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:54 25 4
gpt4 key购买 nike

我是 C++ 的新手(对整体编程来说也是新手),当我读到我的 C++ 大学书籍(Gaddis、Walters 和 Muganda 的“Starting out with C++ Early Objects”第 9 版)时,我看到了关于 bool 数据类型。

“注意:请注意,true 和 false 周围没有引号。这是因为它们是变量,而不是字符串。”

现在,据我所知,变量是可以改变的。我知道 bool 数据类型的变量将是一个变量,但怎么会 truefalse被认为是变量?

据我了解,false存储为整数值 0true作为整数值 1 .我尝试分配值 x其中 x0<x<0到一个 bool 值,它们都输出 1这让我得出结论 true也是除0以外的一切(换句话说,true 与 !false 相同?)。

如果这是真的,为什么“假”被认为是变量而不是常量?

最佳答案

您使用的图书表明作者明显缺乏对主题的理解。那本书在骗你。把它扔进垃圾桶。

truefalse 是 bool 文字:它们是写下 bool 类型值的直接方式。 "true""false" 是字符串字面量——不幸的是,C++ 可以通过将它们转换为它们的地址,然后再转换为 bool 值来帮助您搬起石头砸自己的脚.所以你得到了这个美妙的金 block :

bool b1 = "false"; // string contents don’t matter
assert(b1 == true);
using book = bool;
book b2 = false;
assert(b2 == false);

断言是在代码中编写真语句的一种方式:它们意味着,在它们出现的地方,括号中的条件必须为真。

truefalse 以编译器所需的任何方式存储——这是一个实现细节,标准在这里没有要求,除了 true 必须在数字上下文中转换为 1,而 false 必须在那里转换为 0。通常它们不存储为整数,而是字节(char),即

assert(sizeof(int) > sizeof(bool));

关于c++ - 为什么 `true` 和 `false` 都被认为是变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52569552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com