[问题] 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