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

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;
}

++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。

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
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检查就对了,你给的代码不全,我无从判断

本回答被网友采纳
第2个回答  2015-06-17
你好,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个是不是。再把这个记录存到文件里面去。最后存完后再关闭文件流。

追问

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

追答

你问我我怎么知道,你没有给我全部的代码,我怎么运行?你自己分析一下代码,一般都看得出来

第3个回答  2011-11-13
++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
相似回答