我可以假设(bool)true == (int)1任何C++编译器吗?
许多编译器似乎只保留bool值中的0或1,但我不确定这将始终有效:
int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?
Run Code Online (Sandbox Code Playgroud) 以下问题(和答案)表明转换为int时bool的值将为0或1.
我的问题是编译器是否可以在内部将值表示为其他内容(直到转换).我隐约回想起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在记忆中如何表现? 谢谢你的回答.