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);
}
}
展开
 我来答
百度网友8b58de0
2019-07-24 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:355万
展开全部
下面的代码中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);
}
}
追问
如果是负的还会执行吗?
追答
负的也会执行,到0就结束了,没有到负的机会。
microroom
科技发烧友

2019-07-24 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1853万
展开全部
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
追问
如果是负的还会执行吗?
追答
会,但会无限递归。因为if永远不会为假(0)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友998b7ee
2019-07-24
知道答主
回答量:5
采纳率:0%
帮助的人:2.7万
展开全部
首先我们要理解––i是什么意思
通俗一点讲––i就是i这个变量自减1,并且––i这个整体(––i是一个表达式,表达式会有一个结果)的结果是i–1。
然后我们要理解if语句,if语句后面这个表达式如果为0是不执行if后面是语句的,不为0才执行,所以这一段程序的意思就是每次i–1并且判断是不是等于0,不为0则打印i,直到减为0
追问
如果是负的还会执行吗?
追答
也是会的,只要不是0就会的,这里牵扯到一些关于条件语句在底层硬件是如何实现的问题,你只要知道if语句后面的条码表达式如果是0就不会执行,非0就会执行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式