【发布时间】:2010-08-04 21:07:05
【问题描述】:
如果我不小心在 C/C++ 中这样编码,以下代码的行为和输出会是什么,
float a = 12.5;
printf("%d\n", a);
printf("%d\n", *(int *)&a);
【问题讨论】:
-
两个字:未定义的行为
-
好奇的点是有意地尝试一下,看看会发生什么:)
-
@Nikolai:但在多个平台上尝试(最好使用不同的字节序或不同的 sizeof(int))
-
@Nikolai 但是如果他尝试它会发生什么,它的信息量不是很大,这就是 UB 的方式。不过,我同意你的观点——有时我认为我是 SO 上唯一真正拥有编译器的人。
-
@Prabhu,我怀疑这是某人的说法,他们认为这个问题是无稽之谈。它不是来自我。
标签: c++ c pointers floating-point