以下程序的输出结果是?

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:00:31
#include <stdio.h>
main()
{
int i=6,j;
j=(++i)+(i++)
printf("j=%d\n,j");
}

怎么答案是不是14 我怎么算的确13哩?

是14
原因:
i=6

j=(++i)+(i++)
在做++i的时候 i先+1后运算,这个时候i=7
做i++的时候i先运算后+1,这个时候,先算,++i的7+i=7+7=14,此时,i=8。
也就是说,
如果j=(++i)+(i++)换成j=(++i)+(++i),那么最后的结果是7+8=15,最后i=8。
如果j=(++i)+(i++)换成j=(i++)+(i++),那么最后的结果6+7=13,最后i=8。
明白了吗。

"j=(++i)+(i++)"中第一个++i把i变成了7,这时后面的i++中i就等于7了。所以是7+7。

14

程序错了两个符号,应该修改为:
#include <stdio.h>
main()
{
int i=6,j;
j=(++i)+(i++);
printf("j=%d\n",j);
}

运行后输出结果是:
14

因为核心语句:
j=(++i)+(i++);

实际上相当于:
++i;
j=j+i;
i++;

你修改程序测试,如果最后也输出i的话,i的值是8。

14