我是C ++的新手(总体上对编程还是相当陌生的),当我在阅读关于C ++的笔记时,正在阅读我的C ++大学书(“从C ++早期对象开始”,第9版,由Gaddis,Walters和Muganda撰写)。 bool数据类型。
“注意:请注意,true和false周围没有引号。这是因为它们是变量,而不是字符串。”
现在,据我了解,可以更改变量。我知道bool数据类型的变量将是一个变量,但是true
和false
为何被视为变量?
据我了解,false
存储为整数值0
,而true
存储为整数值1
。我尝试将值x
分配给x
,其中0<x<0
是1
,它们都输出true
,这使我得出结论,0
也是其他所有内容比!false
(换句话说,真与<td class="upload-pic"><input class="file-submit" type="file" name="fileUpload" size="50" multiple="multiple" accept=".jpg"/></td>
相同吗?)。
那么,如果这是真的,为什么'false'被视为变量而不是常量?
答案 0 :(得分:7)
您使用的一本书显然表明作者对主题的理解不足。那本书对你说谎。扔进垃圾桶。
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);
assert是在代码中编写真实语句的一种方式:它们意味着在出现时,括号中的条件必须为true。
true
和false
以编译器需要的任何方式存储–这是实现细节,标准在这里没有任何要求,除了true
必须转换为{{1 }}在数字上下文中,并且1
在那里必须转换为false
。通常,它们不是存储为整数,而是存储字节(0
),即
char