2010-08-04 110 views
2

会有什么行为和下面的代码的输出,如果我意外的代码,以便在C/C++,以下代码片段的行为是什么?

float a = 12.5; 
printf("%d\n", a); 
printf("%d\n", *(int *)&a); 
+6

两个字:未定义的行为 – 2010-08-04 21:07:48

+2

好奇心是尝试*有意*看看会发生什么:) – 2010-08-04 21:08:46

+0

@Nikolai:但在多个平台上尝试它(最好有不同的字节顺序或不同的sizeof(int)) – 2010-08-04 21:10:30

回答

7

Rubish和更rubish。

你会得到一些有意义的事情,如果你做了,虽然

printf("%d\n", (int)a); 
+2

+1无意的幽默。 :-) – 2010-08-04 21:09:15

+0

@Paul R:你怎么知道这是无意的?不是说这不介意你。 – torak 2010-08-04 21:12:16

+0

@torak:如果是故意的,我表示歉意 - 我认为这可能只是一个错字而已,相当有趣而且适中。 :-) – 2010-08-04 21:39:07

0

其不确定下,因为ANSI定义的sizeof不是(INT)和sizeof(浮动)之间的关系。