0
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能转换吗?
在此先感谢。
你期待它打印'43'作为字符串吗? – LogicStuff
我不明白。为什么'(char *)m'没有工作?我们经常在嵌入式系统中使用它来为指针分配硬件组件的地址。 –
您可能会将铸造与'operator <<'的可用重载混淆。例如'cout'将打印一个char *'作为一个字符串;但是'void *'作为指针。 –