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