gpt4 book ai didi

c++ - Boolean_conversions 使用 reinterpret_cast<>

转载 作者:行者123 更新时间:2023-11-28 01:09:14 26 4
gpt4 key购买 nike

谁能举个例子

 Boolean_conversions Using  reinterpret_cast<>

我遇到执行失败..任何人解释..

例如:

   void Boolean_Conversions()
{
bool b = 0;
int *i = reinterpret_cast<int*> (&b);
// iam expecting as *i is 0/false ,but it is showing runtime error
}

编辑:符合ISO标准第 5.2.10 节,第 1 段:

      "The result of the expression reinterpret_cast<T>(v) is the
result of converting the expression v to type T. If T is a
reference type, the result is an lvalue; otherwise, the re
sult is an rvalue and the l-value to r-value (4.1), array
to pointer (4.2), and function to pointer (4.3) standard c
onversions are performed on the the expression v. Types sh
all not be defined in a reinterpret_cast."

从这个我正在尝试..我做了很多转换..像 Array_to_Pointer,Function_To_Pointer,Integral/Pointer_Conversions 等等...但我不知道为什么 bool 转换失败。

谁能说出它失败的原因..否则使用 reinterpret_cast 告诉 bool 转换。

主要是在 G++.CC/EDG/COdepad..etc 编译器中导致运行时失败

请解释

最佳答案

不,输出未定义。请注意,转换是未定义的。

在我的机器上 *i = 0xcccccc00

Note the lsb which is 00

对应于初始化为 0(false) 的 bool 变量的值。其他三个字节中的字节模式(假设 int 的大小为 32 位)是完全未指定的,取决于内存/字节顺序等中的内容。

但从技术上讲,这是一种未定义的行为,因为我们正在推迟我们没有保留/分配的内存位置(全部)。

关于c++ - Boolean_conversions 使用 reinterpret_cast<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344201/

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