下面是引用 fishq 於 2012-08-14 13:18 發表的 請教各種符號的用法 經過請進: 
我一直都很想問在源碼中 各種符號代表什麼 / 怎樣應用 符號
例子如下:
1. #define 123(%1) = %1 代表?
2. #define 123 (456 |= 1) = |= 代表?
3. #define 123 (456 &= 1) = &= 代表?
4. #define 123 (456 & 1) = & 代表?
5. #define 123 ~(1) = ~ 代表?
各位大大可否能幫助一下?
|=, &=, &, ~
這4個, 我不懂說出來..
做個小範例吧...
複製程式
enum Skill
{
SKILL_1 = (1 << 0), // 技能1
SKILL_2 = (1 << 1), // 技能2
SKILL_3 = (1 << 2) // 技能3
};
new g_skill[33]; // 定義玩家激活的技能
abc (id)
{
g_skill[id] |= SKILL_1; // 激活玩家技能1
g_skill[id] &= ~SKILL_2; // 消去玩家技能2
g_skill[id] |= SKILL_3; // 激活玩家技能3
/*
以上內容可寫成 g_skill[id] |= (SKILL_1 | SKILL_2);
同樣如果消去玩家技能1/2可寫成 g_skill[id] &= ~(SKILL1 | SKILL2);
*/
if (g_skill[id] & (SKILL_1 | SKILL_2 | SKILL_3)) // 如果玩家同時激活3個技能
.....
else if (g_skill[id] & (SKILL_1 | SKILL_2)) // 否則, 如果玩家同時激活技能1和技能2
.....
else if (g_skill[id] & (SKILL_1 | SKILL_3)) // 你明的.....
..... // 以上例子中, 會運行這段
else if (g_skill[id] & SKILL_1) // 如果玩家激活技能1
..... // 以上例子中, 不會運行這段 (注意if /else if 用法!)
if (g_skill[id] & SKILL_1) // 如果玩家激活技能1
..... // 以上例子中, 會運行這段
if (g_skill[id] & SKILL_2) // 如果玩家激活技能2
..... // 以上例子中, 不會運行這段
else if (g_skill[id] & SKILL_3) // 如果玩家激活技能3
..... // 以上例子中, 不會運行這段 (注意if /else if 用法!)
if (!(g_skill[id] & SKILL_2)) // 如果玩家沒激活技能2
..... // 以上例子中, 會運行這段
g_skill[id] = 0; // 消去玩家所有技能
}