【发布时间】:2016-09-20 20:42:29
【问题描述】:
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* 到类型 char* 的 static_cast 无效
static_cast 不应该可以转换吗?
提前致谢。
【问题讨论】:
-
您是否希望它以字符串形式打印
43? -
我不明白。为什么
(char *) m不起作用?我们在嵌入式系统中经常使用它来将硬件组件的地址分配给指针。 -
您可能会将转换与
operator<<的可用重载混淆。例如cout将打印char *作为字符串;但void *作为指针。 -
所有 4
cout行都是假的。你为什么要这样做。
标签: c++ casting type-conversion