【发布时间】:2013-07-21 01:56:49
【问题描述】:
谁能向我解释这个程序的输出背后的原因是0 0 0 0 0?
这里我们使用static variable var,其值不会因函数调用而改变。在递归调用期间,var 的值将是 4, 3, 2, 1。当var 变为零时,递归终止并且控制转移到printf 语句。
为什么输出不是1,2,3,4?
main(){
static int var=5;
if(--var)
main();
printf(" %d ",var);
}
再一次,如果你使用 if 条件var-- 那么程序输出将是-1 -1 -1 -1 -1 -1?
【问题讨论】:
-
关于第二个问题:
--var先递减,然后检查if(var),而var--检查 var 的值,然后递减。if(var--)表示if(var) var = var - 1;和if(--var):var = var - 1; if(var)
标签: c recursion static-variables