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能够转换吗?
提前致谢。
答案 0 :(得分:1)
Here是static_cast
可以完成的完整列表。和
没有选项将指向一个类的指针转换为指向另一个非相关类的指针。仅仅因为这不是标准的C ++行为
然而,人们仍然可以使用c式演员,reinterpret_cast
甚至&#34;铸造&#34;与union
。