为什么'true'和'false'都被视为变量? 我是C++新手(对编程来说是全新的),我在阅读BoL数据类型的注释时,正在阅读我的C++学院图书(“C++早期对象”第九版,加迪斯), Muganda。

为什么'true'和'false'都被视为变量? 我是C++新手(对编程来说是全新的),我在阅读BoL数据类型的注释时,正在阅读我的C++学院图书(“C++早期对象”第九版,加迪斯), Muganda。,c++,definition,C++,Definition,注意:注意true和false周围没有引号。这是因为它们是变量,而不是字符串 现在,据我所知,变量是可以改变的。我知道bool数据类型的变量是变量,但为什么true和false被视为变量 根据我的理解,false存储为整数值0,true存储为整数值1。我试着给x赋值,其中x是0你使用的是一本书,书中作者显然对主题缺乏理解。那本书在骗你。把它扔进垃圾桶 true和false是布尔文本:它们是一种写下类型为bool的值的简单方法“true”和“false”是字符串文字,不幸的是,C++可以帮助您通过

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

现在,据我所知,变量是可以改变的。我知道bool数据类型的变量是变量,但为什么
true
false
被视为变量


根据我的理解,
false
存储为整数值
0
true
存储为整数值
1
。我试着给
x
赋值,其中
x
0你使用的是一本书,书中作者显然对主题缺乏理解。那本书在骗你。把它扔进垃圾桶

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语句的一种方式:它们意味着,在它们出现时,括号中的条件必须为true

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


true
false
都是关键字,它们都是值。它们不是变量。显然,当作者想要指出字符串文字和非(字符串文字)之间的区别时,他们在词汇选择上并不谨慎。请参考更好的选项。在他们的辩护中,他们也在布尔变量部分的开头声明“
true
是一个特殊的整数变量,其值为1”,而
false
的值为0,这意味着它们是常量。哦,是的,我看到了。他们在这本书中还没有提到常数,所以我想这就是为什么。这让我很困惑。谢谢你的回答:)这也不是通常所说的常数。这是一个表示文字的关键词。你想用b2
一书中的双关语吗?我没有把bool定义为字符串来编译代码,我想你误解了我的问题。我将布尔值设置为整数值,而不是字符串。不过,您的回答很有帮助,谢谢:)您的意思是字符串将转换为RAM中的地址,对吗?然后变成布尔人。这意味着它们的值不是零,因此为真。“这就是你想说的吗?”亨里克说得对。C和C++有一个讨厌的问题,它自动将数组转换成其第一个元素的地址。这在当时似乎是个好主意…@GSerg这是一个非常可靠的弗洛伊德式的失误。注意到了。
assert(sizeof(int) > sizeof(bool));