星期五, 6月 26, 2009

C 的 && 與 ||

前一陣子看Javascript 語言精髓與編程實踐這本書的時候,發現可以用 && 來達到 if ,用 || 達到 if not 的效果,所以下面是以 C/C++ 實驗的結果:


#include <stdio.h>

int say_hello( void )
{
printf("Hello world!!\n");
return 0;
}

int main( int argc, char* argv[] )
{
int flag=0;

printf("flag=0\n");
flag && say_hello(); // say_hello() won't be invoked
flag || say_hello(); // say_hello() will be invoked

printf("flag=1\n");
flag=1;
flag && say_hello(); // say_hello() will be invoked
flag || say_hello(); // say_hello() won't be invoked

return 0;
}


不過坦白說,這樣寫的結果是導致可讀性變差,只有自己維護這份 code 時,那是可以用,很多人維護一份 code 時,最好還是避免,或者,加上註解比較好。

我想 c# / java 應該也可以這樣作。

p.s. 如果不是呼叫函數的話,記得要使用 ( ),例如:
i && (j=100);

這就等同於:
if(i) j=100;

沒有留言: