任何人都可以向我解释这个程序输出背后的原因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);
}
Run Code Online (Sandbox Code Playgroud)
再次,如果您使用if条件,var--那么程序输出将是-1 -1 -1 -1 -1 -1?
任何人都可以向我解释这些输出背后的逻辑吗?我猜这里*用作抑制字符,但我无法弄清楚输出.
main()
{
char *s="hello world";
int i=7;
printf("%.*%s",s);
}
Run Code Online (Sandbox Code Playgroud)
输出:%s
如果你替换printf语句,printf("%,*%s",s)那么你的输出将是*hello world ???