下面是引用 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」三鍵…