任何人都可以向我解釋此程序輸出背後的原因是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);
}
同樣,如果你使用,如果條件var--
則程序輸出將是-1 -1 -1 -1 -1 -1
?
大約第2個問題:'--var'首先遞減,然後檢查if(var)',而'var - '檢查var的值然後遞減。 if(var - )'表示如果(var)var = var - 1;和'if( - var)':'var = var - 1;如果(var)' – varren