C语言 请问代码里面的i--,i++什么意思

lend()//查找所领取物资的信息{inti,m;printf("\n输入查询名称领料数量\n");scanf("%s%ld",p2.name,&p2.total);m... lend() //查找所领取物资的信息
{
int i,m;
printf("\n输入查询名称 领料数量\n");
scanf("%s %ld",p2.name,&p2.total);
m=load();
for(i=0;i<m;i++)
{
if(strcmp(p2.name, p1[i].name)==0)
if(p2.total<=p1[i].real)
{
i--;
break;
}
else printf("\n查询到该物资,不满足领料要求\n");
}
if(i==m) printf("\n not found!\n");
else
{
FILE *fp;
printf("\n输入今天日期:\n");
scanf("%ld",&p2.date);
fp=fopen("领料单.txt","a");
fprintf(fp,"%s %ld %ld",p2.name,p2.date,p2.total);
fclose(fp);
i++;
p1[i].real=p1[i].real-p2.total;
fp=fopen("pro.txt","a");
for(i=0;i<m;i++)
fprintf(fp,"%s %s %s %ld %ld %ld %ld\n",p1[i].name,p1[i].num,
p1[i].size,p1[i].date,p1[i].max,p1[i].min,p1[i].real);
fclose(fp);
}
return 0;
}
展开
 我来答
四舍五不入6
高粉答主

2020-02-03 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2万
展开全部

++i是指先把i加上1后在对i进行运算。举个例子 i=0;n=0;

当执行n=++i后;是 n的值就是1;i的值为1;而若是执行n=i++则,n的值为0。i为1;

换句话说n=++i是先执行n=i;在对i自加运算。

n=i++;是先执行i的自加运算再把i的值赋予n。

扩展资料:

自增运算符 ++ 使操作数的值加1,其操作数必须为可变左值(可简单地理解为变量)。

++ 可以置于操作数前面,也可以放在后面,如:

++i;

i++ ;

++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。

自减运算符--与之类似,只不过是变加为减而已,自增运算符更加简洁,且可以控制效果作用于运算之前还是之后,具有很大的便利性。

参考资料来源:百度百科-自增自减运算符

wang06998
推荐于2017-12-16 · TA获得超过5659个赞
知道大有可为答主
回答量:3755
采纳率:83%
帮助的人:2439万
展开全部
for(i=0;i<m;i++)
{ if(strcmp(p2.name, p1[i].name)==0)
if(p2.total<=p1[i].real)
{i--;
break;
}
else printf("\n查询到该物资,不满足领料要求\n");

作为for循环,每次循环结束后,末尾那个i++无法避免。若是有情况,需要本次for和下次for执行时,i的取值完全相同,那就只能是想办法抵消掉本次循环结束后的那次i++。
i++是让i加一,要抵消,当然是得先让i减一,之后再去执行i++了。
追问

知道为什么执行程序的时候结果下面一行为什么出现0吗?急

追答
既然是多出来的0,那当然是“输出”出来的0,也就是说,跟printf函数的调用有关系。
你给出的代码里面,涉及到的几个printf都没有问题,你检查一下输出
“物资名称 领料日期 领料数量”之后输出具体内容的那几句printf,就是那里的问题。
还有输出“产品名 产品数量"之后的printf。
总之,逮着printf检查就对了,你给的代码不全,我无从判断
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爽朗的qiuyan
2015-06-17
知道答主
回答量:10
采纳率:0%
帮助的人:5万
展开全部
你好,i++代表的是i=i+1;i--代表的是i=i-1;这是缩写的形式,这是一般计数时会用到。
更多追问追答
追问
这个我懂,只是上面哪里
if(p2.total<=p1[i].real)
{
i--;
break;
}

fprintf(fp,"%s %ld %ld",p2.name,p2.date,p2.total);
fclose(fp);
i++;
这里不懂
追答
if(p2.total<=p1[i].real)
{
i--;
break;
} 你去领取材料,你是不是要先判断一下,你要的材料的有没有,所上面的if(strcmp(p2.name, p1[i].name)==0)判断有没有这个东西,如果有这个东西,你是不是要领取,你领取的数量是不是要小于你这个东西的存量,所以p2.total<=p1[i].real,小于等于,不可能这个东西剩于100个,你还能领取101个吧。
fprintf(fp,"%s %ld %ld",p2.name,p2.date,p2.total);这一句的意思是保存信息到文件里,你取了东西,我用不用减去领取的数量,再记录到文件里,比如,有个东西原本100个,你取了50个,剩下50个,那就需要修改这个东西剩于50个是不是。再把这个记录存到文件里面去。最后存完后再关闭文件流。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红领巾飘过
2011-11-13 · TA获得超过345个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:236万
展开全部
++i是指先把i加上1后在对i进行运算。举个例子 i=0;n=0;
当执行n=++i后;是 n的值就是1;i的值为1;而若是执行n=i++则,n的值为0。i为1;
换句话说n=++i是先执行n=i;在对i自加运算。
n=i++;是先执行i的自加运算再把i的值赋予n
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式