c语言(解释如何运算结果)

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])
{int i,j;
i=8,j=10;
printf("%d,%d,%d,%d\n",i,j,++i,j++);
return 0;
}
结果是9.10.9.10

printf("%d,%d,%d,%d\n",i,j,++i,j++);

1.先进行j++的处理,++在后,先引用后计算,所以第四位的%d是10
2.再进行++i的处理,++在前,先计算后引用,所以第三位的%d是9
3.再进行j的处理,在第一步后,j已经被加了1,所以第二位的%d是11
4.再进行i的处理,在第二步后,i已经被加了1,所以第一位的%d是9

所以运行结果是9 11 9 10
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-12
应该是 8,10,9,10
第2个回答  2009-10-12
函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。

参考资料:http://baike.baidu.com/view/1427555.htm

第3个回答  2009-10-12
++i:++在前面是先+1后使用
j++:++在后面是先使用后+1

C语言参数是从右到左压栈
1)j入栈,然j+1(入栈的是10,入栈后j等于11)
2)i+1,然后i入栈(i等于9,入栈的是9)
3)j入栈(入栈的是11)
4)i入栈(入栈的是9)

输出结果就是入栈的值,从左到右是 9 11 9 10
我在vc下试过了
第4个回答  2009-10-12
#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[]) //传递参数型主函数
{int i,j;
i=8,j=10; //中间最好用分号分开
printf("%d,%d,%d,%d\n",i,j,++i,j++); // 结果 8,9,9,9
return 0; //正常退出
}

++i // 先自加,之后表达式的结果为加后的结果
j++ //表达式的结果为j,然后自加

不知道清楚了么
第5个回答  2009-10-12
这是有一个算法的
printf("%d,%d,%d,%d\n",i,j,++i,j++);
可以看成是
printf("%d",i);
printf("%d",j);
printf("%d",++i);
printf("%d',j++);
所以最后结果应该是8 10 9 10

参考资料:如果您的回答是从其他地方引用,请表明出处

相似回答