
C语言中if(--i)是什么意思
#include<stdio.h>intmain(){staticinti=5;if(--i){printf("%d",i);main(10);}}...
#include <stdio.h>
int main()
{
static int i = 5;
if (--i){
printf("%d ", i);
main(10);
}
} 展开
int main()
{
static int i = 5;
if (--i){
printf("%d ", i);
main(10);
}
} 展开
3个回答
展开全部
下面的代码中if(--i)这句的意思是:
先将i自减去1,然后判断i的值是否等于0,不等于0即条件成立,执行显示函数并递归。
自减1后如果等于0,则不执行if里面的语句,退出main函数。
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
printf("%d ", i);
main(10);
}
}
先将i自减去1,然后判断i的值是否等于0,不等于0即条件成立,执行显示函数并递归。
自减1后如果等于0,则不执行if里面的语句,退出main函数。
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
printf("%d ", i);
main(10);
}
}
追问
如果是负的还会执行吗?
追答
负的也会执行,到0就结束了,没有到负的机会。
展开全部
if(--i),i先自减1,如果自减后i不等于0,则if为真。
原代码递归调用有问题,改成:
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
printf("%d ", i);
main();
}
}
以上会输出:
4 3 2 1
原代码递归调用有问题,改成:
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
printf("%d ", i);
main();
}
}
以上会输出:
4 3 2 1
追问
如果是负的还会执行吗?
追答
会,但会无限递归。因为if永远不会为假(0)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询