如題:
int a = 10;
int *p1 = &a;
float *p2;
p2 = (float*)p1;
cout<<*p2<<endl;
上述代碼輸出為什么不是10?
謝謝。
uj5u.com熱心網友回復:
float型別和int型別的表示方法是不一樣的,記憶體內容完全相同的話,以float和int分別去解釋,肯定是兩個不同的結果uj5u.com熱心網友回復:
浮點型資料和整形資料在記憶體中存盤方式是不一樣的。4位元組的整形資料二進制存盤方式為000.....001這種。
浮點型則是不同的,浮點型有一個IEEE754標準,你可以了解一下,不是類似于整形這種簡單的存盤方式。
https://www.jianshu.com/p/7c636d8f18d5
https://www.cnblogs.com/yalphait/articles/9367579.html
兩者之間強制轉換的話,結果很有可能不是你期待的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14274.html
標籤:C++ 語言
下一篇:c++程式自己執行兩次
