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

作者: djshen (djshen)   2018-08-01 02:23:05
看起來是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
:
作者: cutekid (可愛小孩子)   2018-08-01 02:31:00
作者: djshen (djshen)   2018-08-01 11:34:00
好像會有align問題
作者: sarafciel (Cattuz)   2018-08-01 13:57:00
https://ideone.com/oh1H72 推 順便補個驗證的code

Links booklink

Contact Us: admin [ a t ] ucptt.com