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 *'作爲指針。 –