非正常型条件判断语句
通常情况下,当我们在程序里需要判断条件时,总会用到if else或是switch case,再或者for,while等等,这些都是编程语言内置好的,我们用就可以了。但是今天看到一篇文章,描述了一种不用任何条件语句,只用表达式做判断。原文链接地址http://www.cnblogs.com/westfly/archive/2011/10/11/2206844.html 感觉挺有意思的,拿来分享。
题目:求n的累加值 (1+2+3+......+n)
代码如下:
#include <stdio.h> int sum(int n) { int tmp = 0; (n)&&(tmp = sum(n-1)); return n+tmp; } int main() { printf("%d\n",sum(10)); return 0; }
最重要的是这句
(n)&&(tmp = sum(n-1));
在C语言里,&&的原则是这样的,只有当&&前面的值不为false的时候才执行&&后面的。所以,当n为0时,默认是不会向后执行的,这就对后面的语句进行了保护,也间接的形成了条件判断。