如何解决在 C++ 中将 bool* 转换为 int* 可能存在哪些问题
在 GCC、MVSC、Clang 和 AppleClang 中,下面的代码将编译并始终打印“no”。但是当取消引用 int* 时,我们是否实际上将 3 个额外字节读入测试变量,因此如果 3 个额外字节中的一些不是 0,代码可能会打印“是”?
示例代码:
#include <cstdio>
void* fun()
{
static bool value = false;
return &value;
}
int main(int,char**)
{
int test = *static_cast<int*>(fun());
if (test == 0)
{
printf("no");
}
else
{
printf("yes");
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。