我是C++的新手(也是整体编程的新手),当我看到关于bool数据类型的说明时,我正在阅读我的C++大学书("从C++ Early Objects开始",第9版,Gaddis,Walters和Muganda). .
"注意:请注意,true和false周围没有引号.这是因为它们是变量,而不是字符串."
现在,根据我所学到的,变量可以改变.据我所知,BOOL数据类型的变量将是一个变量,但怎么来的true,并false正在考虑的变量?
根据我的理解,false存储为整数值0和true整数值1.我试图分配值x,其中x是0<x<0一个布尔值,他们都输出1这让我得出的结论是,true也比其他一切0(换句话说,真正的是一样的!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);
Run Code Online (Sandbox Code Playgroud)
断言是在代码中编写真实语句的一种方式:它们意味着,在它们出现的那一刻,括号中的条件必须为真.
true并false以编译器所需的任何方式存储 - 这是一个实现细节,标准在这里没有要求,除了true必须转换到1数字上下文,并且false必须转换到0那里.通常它们不是作为整数存储,而是存储在bytes(char)中,即
assert(sizeof(int) > sizeof(bool));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |