【发布时间】:2015-01-08 14:09:22
【问题描述】:
我是一名 IT 学生,今天我参加了 C 编程考试。 其中一个问题有点令人困惑:是否可以将 float* 转换为 int* ? 我说没有,你怎么看?
【问题讨论】:
-
你可以,你不能:看看 static_cast 和 reinterpret_cast
-
@BeyelerStudios 那是 C++,不是吗?
-
“你的意见是什么?” ——没有意见。可以将
float*转换为int*。它可能无法达到您的预期,但这并不意味着它无效或不可能;) -
是的,但它可能不安全,因为它破坏了strict-aliasing rule。除此之外,C 语言标准不强制
sizeof(int)和sizeof(float)相等。所以在给定的平台上,如果它们不相等,那么即使不违反严格别名规则也是不安全的(使用指针来访问内存会产生未定义的行为)。 -
看看here在实际生产代码中的使用情况。