下面是引用 andyt0621 于 2010-12-31 18:42 发表的 :  
 
不错的举例..让人印象深刻0.0 
我想我明白了0.0 
我还看过 A ? B : C 
我是理解成 如果是A 就是用 B 否则是用 C 0.0 
还有些是单一个 & 的..这个就不明白了0.0 
(离题了^^.)
 完全没离题吧… 
至于那个「?」和「:」是: 
复制程式
 等同 
复制程式
 
if (A) 
{ 
 B; 
} 
else 
{ 
 C; 
} 
  至于多使用几个「?」和「:」的话: 
复制程式
A ? B ? C : D : E ? F ? G : H : I ? J : K
  等同 
复制程式
 
if (A) 
{ 
 if (B) 
 { 
  C; 
 } 
 else 
 { 
  D; 
 } 
} 
else if (E) 
{ 
 if (F) 
 { 
  G; 
 } 
 else 
 { 
  H; 
 } 
} 
else 
{ 
 if (I) 
 { 
  J; 
 } 
 else 
 { 
  K; 
 } 
} 
  一句就解决的判断式吃饱没事加这么长做啥呢? 例如279行的「stock Chaos_X」利用「?」和「:」就能缩短成36行… 
程式码当然是越简短看起来越简洁… 
只要别弄到最后自己也看不懂就好…例如上例… 至于「&」…判断记忆体用的…解释是「且」…
我知道有解释和没解释一样… 拿蛮常见的「pev(id, pev_button)」做例子好了… 
先参照参照<hlsdk_const.inc>里「IN_」系列的内容吧… 
如果「pev(id, pev_button)」侦测出来的数值是「11」… 
十进位 11
10 转成二进位是 1011
2 … 
若这时判断式是「if (pev(id, pev_button) & IN_ATTACK)」…回传值将是「true」… 
因为上式等同「if (pev(id, pev_button) & (1<<0))」…至于记忆体的比较方式: 
 
    1        0        1       1 
(1<<3)(1<<2)(1<<1)(1<<0)  
    23      22      21     20 
  1*8 + 0*4 + 1*2 + 1*1 = 11 
 这样排列应该够一目了然吧… 
所以当「pev(id, pev_button)」侦测出来的数值是「11」时代表 
「pev(id, pev_button)」同时侦测到「(1<<0)」、「(1<<1)」和「(1<<3)」… 
也就是某人同时按住「IN_ATTACK」、「IN_JUMP」和「IN_FORWARD」三键…