非正常型条件判断语句

通常情况下,当我们在程序里需要判断条件时,总会用到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时,默认是不会向后执行的,这就对后面的语句进行了保护,也间接的形成了条件判断。


posted @ 2013-01-21 14:27  bus driver  阅读(133)  评论(0编辑  收藏  举报
Hello world