帮忙解释一下这个C程序的运行结果.

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:16:07
#include "stdio.h"
main()
{
int i,j;
i=j=5;
printf("i++=%d,j--=%d\n",i++,j--);
printf("++i=%d,--j=%d\n",++i,--j);
printf("i++=%d,j--=%d\n",i++,j--);
printf("++i=%d,--j=%d\n",++i,--j);
printf("i=%d,j=%d\n",i,j);
}
运行结果如下:
i++=5,j--=5
++i+7,--j=3
i++=7,j--=3
++i=9,--j=1
i=9,j=1
为什么第一行运行结果是i++=5,j--=5,而不是6,4,
请帮忙详细解释一下这几个运行结果.谢谢了.

i++是先取i的值,再执行i=i+1操作
j--同理,先取j的值输出为5,再j=j-1
printf("i++=%d,j--=%d\n",i++,j--);
此时取到的i,j为5,取数之后i=6,j=4
printf("++i=%d,--j=%d\n",++i,--j);
这里是先++,后取值,i=i+1=6+1=7,取值为7
j=j-1=4-1=3,取值为3

后面两句计算方法是一样的

i++=i+1,因为C语言的输出读取时从左到右,所以先读到了i这个变量,然后输出,输出后再进行自加运算。j--也是一样。就是先输出,然后再进行++运算。
第二行是先遇到了++运算符,先运行i=i+1,然后输出,因为第一行i已经++了,现在i就等于7了。

i++是先取i的值,再执行i=i+1操作
j--同理,先取j的值输出为5,再j=j-1
printf("i++=%d,j--=%d\n",i++,j--);
此时取到的i,j为5,取数之后i=6,j=4
printf("++i=%d,--j=%d\n",++i,--j);
这里是先++,后取值,i=i+1=6+1=7,取值为7
j=j-1=4-1=3,取三

就是c语言语法规定的,以++为例,如果++放在变量前面,如i=++j,则执行先把j的值加1,然后把加1后的值赋值给i变量,如果++放在变量的后面,如i=j++,则执行先把j的值赋值给i变量,然后j的值加1,然后继续执行后面的语句。根据这个思路你再去理解运行结果你就会很清楚了。