类型转换时出错。混乱

时间:2016-09-20 20:42:30

标签: c++ casting type-conversion

double d = 43.56;
int m = d;
cout<<(char *)&m<<endl; //works fine, it prints: + = 43
cout<<(char *)m<<endl; //this doesn't work, char can't be made into a  pointer
cout<<reinterpret_cast<char *>(&m)<<endl; //works fine, prints: +
cout<<static_cast<char *>(&m)<<endl; //Does not work

我的问题是,为什么最后一行代码不起作用?

编译器错误消息:int *中的static_cast无效,类型为char *

不应该static_cast能够转换吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

Herestatic_cast可以完成的完整列表。和 没有选项将指向一个类的指针转换为指向另一个非相关类的指针。仅仅因为这不是标准的C ++行为 然而,人们仍然可以使用c式演员,reinterpret_cast甚至&#34;铸造&#34;与union