c语言求高人

来源:百度知道 编辑:UC知道 时间:2024/05/28 05:29:16
#include "stdio.h"
int fun(int x,int y)
{int b;
b=x+y;
return b;
}
main()
{
int x=5;
int m;
m=fun(++x,--x);
printf("%d",m);

}结果是什么呀 为什么是9阿

fun(++x,--x)从右开始执行,先做--x,则x=4,再做++x,则x=5,所以返回值为9.
这样的题目在实际应用中很少会出现,因为不同的编译器的结果可能不同,而且不够人性化。

++x=5,x=4;--x=4,x=5;所以、、、典型的题,好久没看c了,

函数参数从右往左计算 fun(++x,--x); 先计算--x x=4 然后自增x=5,
传递(5,4)返回其和就是9了!! 象次类问题还有 比方说
a=6;printf("%d,%d",++a,--a); 打印出来就是 6,5

这个应该跟函数调用方式有关,当C语言执行函数调用的时候,编译器先把最右边的参数送入内存,然后依次向左,也就是说,先计算--X,把4送入内存,然后再计算++x,现在x是4,+++x变成5,所以传过去的是5,和4,结果就是9了 ,要是没看动我说的话,你在百度上查查C语言的压栈方式