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 * *
はこれを変換することができをstatic_castはないでしょうか?
ありがとうございます。
文字列として '43'を印刷すると思いますか? – LogicStuff
わかりません。なぜ '(char *)m'は動かないのですか?組み込みシステムでは、ハードウェアコンポーネントのアドレスをポインタに割り当てるために頻繁に使用します。 –
'operator <<'の利用可能なオーバーロードと混同している可能性があります。例えば、 'cout'は' char * 'を文字列として出力します。 'void *'をポインタとして使用します。 –