相关疑难解决方法(0)

111
推荐指数
4
解决办法
10万
查看次数

在对int进行类型转换时,C/C++ bool类型总是保证为0或1吗?

许多编译器似乎只保留bool值中的0或1,但我不确定这将始终有效:

int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
Run Code Online (Sandbox Code Playgroud)

c c++ boolean

44
推荐指数
4
解决办法
4万
查看次数

C++编译器可以在内部用0或1以外的东西表示bool吗?

以下问题(和答案)表明转换为int时bool的值将为0或1.

  1. 在对int进行类型转换时,C/C++ bool类型总是保证为0或1吗?

  2. c ++ bool问题

我的问题是编译器是否可以在内部将值表示为其他内容(直到转换).我隐约回想起MSVC调试器显示表示bool的字节的数值,如果它不是0或1,我似乎记得有时看到255(0xFF).

换句话说,下面的代码可以返回0或1以外的东西吗?

int boolval(bool z) {
  return *(unsigned char *)&z;
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用二进制格式,bool在结构中使用's,我看到的是255而不是0和1.

编辑:我刚刚发现了一个几乎完全相同的问题所以我在这里链接它以获取更多信息. bool在记忆中如何表现? 谢谢你的回答.

c++

2
推荐指数
1
解决办法
524
查看次数

标签 统计

c++ ×3

boolean ×2

c ×1

casting ×1