C语言中,i++,++i在循环语句中的逻辑推理

一开始没弄清楚++i先自增,再运算,i++先执行,再自增是怎么回事,这次让其在一个for循环中得到了答案,贡献给大家。

代码如下

 #include<stdio.h>
int main()
{
	int i = 0;
	printf("Please Input a chars:\n");
	while (getchar() != '\n')i++;
	printf("Total input chars are: %d\n", i);
	int a=1,sum=0,j = i;
	printf("(j,a)\n");
	while (j--)
	{
		printf("(%d,%d)\n", j,a++);//j--是先运算,在自减,当语句执行到此条,j的值就变成2了。同理,现在a=1。
		sum = sum + a;//当执行此处,a的上一条语句已经加1,故在此处a=2;
		printf("(sum,a)=(%d,%d)\n", sum,a);//同理,这里a=2,如果上一条语句是sum=sum+(a++);这里就变成3了。
	}
	return 0;
}

运行结果如下

Please Input a chars:
123
Tatol input chars are: **3**
(j,a)
(2,1)// j已经执行过一次j--l,故这里是2
(sum,a)=(2,2)//a已经执行过一次a++了,故是2
(1,2)
(sum,a)=(5,3)
(0,3)
(sum,a)=(9,4)
请按任意键继续. . .

总结:

自增或者自减,在一个语句块中,如果i++运行后还有与i有关的运算,后面的i值已经被赋值为已经增加的值运算。
如:j–,a++ 就是这样


你可能感兴趣的:(编程语言,C语言,C++语言)