谁能举个例子

 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.1节,第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."


从这个Iam的尝试中..我做了很多转换..例如Array_to_Pointer,Function_To_Pointer,Integral / Pointer_Conversions等...但是我不知道为什么布尔转换失败。

谁能说出失败的原因..否则,请使用reinterpret_cast告诉布尔型COnversions。

通常是在G ++。CC / EDG / COdepad..etc编译器中出现运行时故障

请解释

最佳答案

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

在我的机器上* i = 0xcccccc00


  注意lsb是00


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

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

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

10-15 00:56