[問題] short assign給unsigned int的問題

看板C_and_CPP (C/C++)作者 (hitman)時間11年前 (2014/08/26 22:26), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
開發平台(Platform):Linux GCC // Code: short short_int_1; unsigned int u_int_tmp; short_int_1 = 0xF0F0; u_int_tmp = short_int_1; printf("u_int_tmp = %#010x\n", u_int_tmp); u_int_tmp = 0; printf("u_int_tmp = %#010x\n", u_int_tmp); u_int_tmp = u_int_tmp | short_int_1; printf("u_int_tmp = %#010x\n", u_int_tmp); ----------------------------------------------------- 輸出結果: u_int_tmp = 0xfffff0f0 u_int_tmp = 0000000000 u_int_tmp = 0xfffff0f0 想請問我想要將short assign給unsigned int, 並且希望不要像上面u_int_tmp在0xF0F0前面都加f 希望的結果是u_int_tmp = 0x0000f0f0 請問要如何做到? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.2.127 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409063210.A.558.html

08/26 22:53, , 1F
你有意識到這 signed short 是負數嗎?
08/26 22:53, 1F

08/26 23:01, , 2F
請問有辦法將short以bit copy的方式assign給int嗎?
08/26 23:01, 2F

08/26 23:02, , 3F
回樓上,我知道這個short是負數
08/26 23:02, 3F

08/26 23:13, , 4F
(unsigned int)(unsigned short)signed_short_value
08/26 23:13, 4F

08/26 23:18, , 5F
sign extension / zero extension
08/26 23:18, 5F

08/26 23:19, , 6F
感謝LPH66的方法
08/26 23:19, 6F

08/26 23:29, , 7F
我會找時間搜尋firose的提示,感謝分享資訊
08/26 23:29, 7F

08/27 16:42, , 8F
話說那樣 signed 轉 unsigned 到底是怎麼定義的呢?
08/27 16:42, 8F

08/27 16:50, , 10F
我想應該是根據6.3.1.3#2
08/27 16:50, 10F

08/27 17:06, , 11F
got it thanks
08/27 17:06, 11F
文章代碼(AID): #1J_9agLO (C_and_CPP)
文章代碼(AID): #1J_9agLO (C_and_CPP)