【发布时间】:2015-10-04 18:38:53
【问题描述】:
我已经阅读了一些问题,但没有找到我想要的东西。 这是一个类型转换的示例(我在一些视频中看到过)
int s = 45;
double d = *(double *) &s;
(这个例子展示了如果你进行这种类型转换,数据是如何丢失的。) 但是我不明白上面的例子和这个有什么区别。
int s = 45;
double d = (double) &s;
或者这个
int s = 45;
double d = (double) s;
【问题讨论】:
-
嗯,第二个结果是 45。第一个可能导致访问冲突,因为在大多数系统上 double 的宽度是 int 的两倍。
-
@Mitch 第二个不一定是45。
-
不,它没有。我把它误读为(双)。我的错。
-
理解这些例子需要理解地址操作符
&和它的逆操作符,解引用操作符*。一旦你理解了他们在做什么,表达应该是清楚的。然后你需要阅读别名,以了解为什么你不应该做 1 或 2。
标签: c type-conversion