下面是引用 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) = ~ 代表? 各位大大可否能帮助一下?
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; // 消去玩家所有技能 }