[問題] Cpp程式語言

作者: koogoo (Killen)   2014-11-25 15:23:42
開發平台(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;
作者: bibo9901 (function(){})()   2014-11-25 15:57:00
冒號是 bit fieldstypedef 是用來簡化程式碼的. 假設寫 union xxx { ... }那型態是 union xxx, 使用上有點不方便. 而使用 typedefunion {...} y 是將匿名union型別定義為y, 打字比較方便
作者: Killercat (殺人貓™)   2014-11-25 18:54:00
bit fields/bit align, 這個初學者當作沒看到就好除了當mask這種邪惡用途以外 通常只有最佳化的意函另外這個align的好爛....2/3要調換才對
作者: Push5F (帳號已賣)   2014-11-25 20:54:00
給菜鳥用的 :D3
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-11-25 21:17:00
初學者不要急著登陸火星。
作者: PoorLoser (廢文製造機)   2014-11-25 22:49:00
還可以用來做 type casting 很好用滴
作者: boss0405 (boss)   2014-11-26 00:08:00
同意樓上,type casting很好用
作者: dirkc (3781615)   2014-11-26 17:12:00
union的部份未回,這裡功能是讓allbits和bits等於同樣的東西或說貼在同塊記憶體空間上, 例如: tT3Rec r;r.allbits=0xdeadbeef; cout << r.bits.nsync;&(r.allbits)和&(r.bits)相等;可以看作r.bits是存取內部bit

Links booklink

Contact Us: admin [ a t ] ucptt.com