gpt4 book ai didi

c++ - bool 在内存中是如何表示的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:13 25 4
gpt4 key购买 nike

如前所述in the docs , bool 数据类型至少占用一个字节的内存。 A similar question was asked on SO before ( How a bool type variable is stored in memory? (C++)),但是这个讨论和文档似乎只讨论了 boolean 数据类型占用的空间量,而不是当我在内存中实际发生的事情这样做:

bool b = true;

那么内存中到底发生了什么?未用于存储此信息的 7 位会发生什么变化?标准是否为此规定了行为?

它们是未定义的吗?或者 C++ 总部的某个人只是这样做了:

enum bool : char 
{
false = 0,
true = 1
};

最佳答案

标准声明 bool 值表现为整数类型,但它没有指定它们在内存中的具体表示:

bool 类型的值为 truefalse。如下所述,bool值表现为整数类型。bool 类型的值参与整数提升" ~ C++03 3.9.1 §6

“整数类型的同义词是整数类型。整数类型的表示应使用纯二进制记数系统定义值” ~ C++03 3.9.1 §7

然而它定义了从boolint的整数提升:

bool 类型的右值可以转换为 int 类型的右值,false 变为零和 true 成为一个。这些转换称为积分提升。” ~ C++03 4.5 §4-5

以及从其他类型到bool的转换:

“零值、空指针值或空成员指针值被转换为 false;任何其他值都被转换为 true。 " ~ C++03 4.12 §1

关于c++ - bool 在内存中是如何表示的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com