为什么 `true` 和 `false` 都被认为是变量?
Why are `true` and `false` both considered variables?
我是 C++ 的新手(对整体编程来说也是新手),当我读到我的 C++ 大学书籍("Starting out with C++ Early Objects" Gaddis、Walters 和 Muganda 的第 9 版)时,我看到了关于 bool 的注释数据类型。
"NOTE: Notice that true and false do not have quotation marks around them. This is because they are variables, not strings."
现在,据我了解,变量是可以更改的。我知道 bool 数据类型的变量将是一个变量,但为什么 true
和 false
被认为是变量?
根据我的理解,false
存储为整数值 0
,true
存储为整数值 1
。我尝试将值 x
分配给 bool,其中 x
是 0<x<0
并且它们都输出 1
这让我得出结论 true
也是其他一切比 0
(换句话说,true 与 !false
相同?)。
如果这是真的,为什么 'false' 被认为是变量而不是常量?
您使用的图书表明作者明显缺乏对主题的理解。那本书在骗你。把它扔进垃圾桶。
true
和 false
是布尔文字:它们是写下 bool
类型值的一种直接方式。 "true"
和 "false"
是字符串文字——不幸的是,C++ 可以通过将它们转换为它们的地址,然后再转换为布尔值来帮助您搬起石头砸自己的脚。所以你得到了这个美妙的金块:
bool b1 = "false"; // string contents don’t matter
assert(b1 == true);
using book = bool;
book b2 = false;
assert(b2 == false);
断言是在代码中编写真语句的一种方式:它们意味着,在它们出现的地方,括号中的条件必须为真。
true
和 false
以编译器需要的任何方式存储——这是一个实现细节,标准在这里没有要求,除了 true
必须转换为 1
在数字上下文中,并且 false
必须在那里转换为 0
。通常它们不是存储为整数,而是字节(char
),即
assert(sizeof(int) > sizeof(bool));
我是 C++ 的新手(对整体编程来说也是新手),当我读到我的 C++ 大学书籍("Starting out with C++ Early Objects" Gaddis、Walters 和 Muganda 的第 9 版)时,我看到了关于 bool 的注释数据类型。
"NOTE: Notice that true and false do not have quotation marks around them. This is because they are variables, not strings."
现在,据我了解,变量是可以更改的。我知道 bool 数据类型的变量将是一个变量,但为什么 true
和 false
被认为是变量?
根据我的理解,false
存储为整数值 0
,true
存储为整数值 1
。我尝试将值 x
分配给 bool,其中 x
是 0<x<0
并且它们都输出 1
这让我得出结论 true
也是其他一切比 0
(换句话说,true 与 !false
相同?)。
如果这是真的,为什么 'false' 被认为是变量而不是常量?
您使用的图书表明作者明显缺乏对主题的理解。那本书在骗你。把它扔进垃圾桶。
true
和 false
是布尔文字:它们是写下 bool
类型值的一种直接方式。 "true"
和 "false"
是字符串文字——不幸的是,C++ 可以通过将它们转换为它们的地址,然后再转换为布尔值来帮助您搬起石头砸自己的脚。所以你得到了这个美妙的金块:
bool b1 = "false"; // string contents don’t matter
assert(b1 == true);
using book = bool;
book b2 = false;
assert(b2 == false);
断言是在代码中编写真语句的一种方式:它们意味着,在它们出现的地方,括号中的条件必须为真。
true
和 false
以编译器需要的任何方式存储——这是一个实现细节,标准在这里没有要求,除了 true
必须转换为 1
在数字上下文中,并且 false
必须在那里转换为 0
。通常它们不是存储为整数,而是字节(char
),即
assert(sizeof(int) > sizeof(bool));