前一陣子看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;