Re: [問題] 抱歉 再詢問一次 c++強制轉換

看板C_and_CPP作者 (djshen)時間7年前 (2018/08/01 02:23), 編輯推噓2(201)
留言3則, 3人參與, 7年前最新討論串2/2 (看更多)
看起來是little endian ※ 引述《s9642108 (sss)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : qt 5 : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : qt creator : 問題(Question): : short tempData[100]; : double *i = (double*)tempData; : *i=6; double 6 binary長這樣 01000000 00011000 00000000 00000000 00000000 00000000 00000000 00000000 在memory裡 最大的byte放在後面 00000000 00000000 00000000 00000000 00000000 00000000 00011000 01000000 : int *j = (int*)&tempData[1]; : *j=6; 00000000 00000000 00000110 00000000 00000000 00000000 00011000 01000000 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 把6寫到這四個byte : qDebug() << " " << tempData[0]; 00000000 00000000 00000110 00000000 00000000 00000000 00011000 01000000 ^^^^^^^^^^^^^^^^^ print 0 (00000000 00000000) : qDebug() << " " << tempData[1]; 00000000 00000000 00000110 00000000 00000000 00000000 00011000 01000000 ^^^^^^^^^^^^^^^^^ print 6 (00000000 00000110) : 抱歉 請容許我在發問一次 : 主要是我想透過 指標改變不同類型的tempDate值,發送這個資料 : 我上網查 小轉大的話 值應該是會一樣的,可是強制轉double 的值都是0 這裡只有pointer轉換 跟小轉大沒關係吧 有錯請指教 : 編譯的時候,也是沒有警告 : 還是不太明白 希望能獲得解答 謝謝 : 預期的正確結果(Expected Output): : 6 : 6 : 錯誤結果(Wrong Output): : 0 : 6 : -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.108.63 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1533061388.A.F4C.html

08/01 02:31, 7年前 , 1F
08/01 02:31, 1F

08/01 11:34, 7年前 , 2F
好像會有align問題
08/01 11:34, 2F

08/01 13:57, 7年前 , 3F
https://ideone.com/oh1H72 推 順便補個驗證的code
08/01 13:57, 3F
文章代碼(AID): #1ROAaCzC (C_and_CPP)
文章代碼(AID): #1ROAaCzC (C_and_CPP)