谁能举个例子
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/