[問題] Cpp程式語言

看板C_and_CPP作者 (Killen)時間9年前 (2014/11/25 15:23), 編輯推噓2(2013)
留言15則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Cpp 問題(Question): 想請問一下大家,通常使用typedef union是希望能做什麼,我有查了一些資料, 但是都不是很理解,還有程式中的DWORD allbits他這樣打代表什麼意義, 還有unsigned nsync : 10; 我不懂冒號再C++語言中的表示,一般來說我們通常定義 一個變數不是都是用等號嗎? 不好意思,由於我是C++的初學者,希望大家能指導一下謝謝大家!!! 程式碼(Code):(請善用置底文網頁, 記得排版) typedef union { DWORD allbits; struct { unsigned nsync :10; unsigned dtime :15; unsigned channel :6; unsigned special :1; } bits; }tT3Rec; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.76.101 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416900226.A.41C.html

11/25 15:57, , 1F
冒號是 bit fields
11/25 15:57, 1F

11/25 16:01, , 2F
typedef 是用來簡化程式碼的. 假設寫 union xxx { ... }
11/25 16:01, 2F

11/25 16:01, , 3F
那型態是 union xxx, 使用上有點不方便. 而使用 typedef
11/25 16:01, 3F

11/25 16:03, , 4F
union {...} y 是將匿名union型別定義為y, 打字比較方便
11/25 16:03, 4F

11/25 18:54, , 5F
bit fields/bit align, 這個初學者當作沒看到就好
11/25 18:54, 5F

11/25 18:55, , 6F
除了當mask這種邪惡用途以外 通常只有最佳化的意函
11/25 18:55, 6F

11/25 18:56, , 7F
另外這個align的好爛....2/3要調換才對
11/25 18:56, 7F

11/25 20:54, , 8F
給菜鳥用的 :D3
11/25 20:54, 8F

11/25 21:17, , 9F
初學者不要急著登陸火星。
11/25 21:17, 9F

11/25 22:49, , 10F
還可以用來做 type casting 很好用滴
11/25 22:49, 10F

11/26 00:08, , 11F
同意樓上,type casting很好用
11/26 00:08, 11F

11/26 17:12, , 12F
union的部份未回,這裡功能是讓allbits和bits等於同樣的東西
11/26 17:12, 12F

11/26 17:19, , 13F
或說貼在同塊記憶體空間上, 例如: tT3Rec r;
11/26 17:19, 13F

11/26 17:21, , 14F
r.allbits=0xdeadbeef; cout << r.bits.nsync;
11/26 17:21, 14F

11/26 17:23, , 15F
&(r.allbits)和&(r.bits)相等;可以看作r.bits是存取內部bit
11/26 17:23, 15F
文章代碼(AID): #1KT2w2GS (C_and_CPP)