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;
} 展开
{
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;
} 展开
4个回答
展开全部
++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。
自减运算符--与之类似,只不过是变加为减而已,自增运算符更加简洁,且可以控制效果作用于运算之前还是之后,具有很大的便利性。
参考资料来源:百度百科-自增自减运算符
展开全部
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++了。
{ 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,也就是说,跟printf函数的调用有关系。
你给出的代码里面,涉及到的几个printf都没有问题,你检查一下输出
“物资名称 领料日期 领料数量”之后输出具体内容的那几句printf,就是那里的问题。
还有输出“产品名 产品数量"之后的printf。
总之,逮着printf检查就对了,你给的代码不全,我无从判断
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,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个是不是。再把这个记录存到文件里面去。最后存完后再关闭文件流。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++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
当执行n=++i后;是 n的值就是1;i的值为1;而若是执行n=i++则,n的值为0。i为1;
换句话说n=++i是先执行n=i;在对i自加运算。
n=i++;是先执行i的自加运算再把i的值赋予n
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询