为什么“ true”和“ false”都被视为变量?

时间:2018-09-29 14:54:59

标签: c++ definition

我是C ++的新手(总体上对编程还是相当陌生的),当我在阅读关于C ++的笔记时,正在阅读我的C ++大学书(“从C ++早期对象开始”,第9版,由Gaddis,Walters和Muganda撰写)。 bool数据类型。

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

现在,据我了解,可以更改变量。我知道bool数据类型的变量将是一个变量,但是truefalse为何被视为变量?

据我了解,false存储为整数值0,而true存储为整数值1。我尝试将值x分配给x,其中0<x<01,它们都输出true,这使我得出结论,0也是其他所有内容比!false(换句话说,真与<td class="upload-pic"><input class="file-submit" type="file" name="fileUpload" size="50" multiple="multiple" accept=".jpg"/></td> 相同吗?)。

那么,如果这是真的,为什么'false'被视为变量而不是常量?

1 个答案:

答案 0 :(得分:7)

您使用的一本书显然表明作者对主题的理解不足。那本书对你说谎。扔进垃圾桶。

truefalse是布尔文字:它们是写下类型bool的值的直接方法。 "true""false"是字符串文字,而且,不幸的是,C ++可以通过将它们转换为它们的地址,然后转换为布尔值来帮助您付诸东流。因此,您会得到一个很棒的金块:

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

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

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

char