C语言求值 fun(int x ,int y) {return(x+y);} void main()

#include<stdio.h>fun(int x ,int y) {return(x+y);} void main() { int a=1,b=2,c=3,sum; sum=fun((a++,b++,a+b),c++); printf("%d\n",sum); } c++为什么没有加1 a和b怎么都加了
如果sum=fun((a++,b++,a+b),c++);变成sum=fun(a++,c++); sum的值是多少

你要主要i++和++i的区别,i++是表达式先使用i的值,之后i要加1,即先使用后加1;
++i是表达式的值加1后在使用,即先加1后使用。
fun((a++,b++,a+b),c++)中,a++的值是1,但是a变成了2;b++的值是2,但是b变成了3;所以a+b=2+3=5;c++的值是3,c变成了4,但是以后再也没有用到c,所以sum=5+3=8;追问

如果sum=fun((a++,b++,a+b),c++); 变成sum=fun(a++,c++); sum的值是多少

追答

a+c=2+4=6

sum=fun(a++,c++); sum的值是多少,sum=1+3=4

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-20
#include <stdio.h>
fun(int x ,int y)
{
return(x+y);
}
void main()
{
int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++); //当出现这种情况时,你记住,它是取(a++,b++,a+b)中最后的一个,也就是 a+b 的值
// c++因为先赋值后运算,所以c的值仍然是
printf("%d\n",sum);
}追问

C++是先运算后赋值吧 如果sum=fun((a++,b++,a+b),c++);变成sum=fun(a++,c++); a和c的值变不变

追答

sum=fun((a++,b++,a+b),c++); 里面先运行 a++,再b++,最后 a+b,也就是5
c++ 这里是先运算还是先赋值, c++和++c的区别你搞清了吗?

C语言求值 fun(int x ,int y) {return(x+y);} void main()
fun((a++,b++,a+b),c++)中,a++的值是1,但是a变成了2;b++的值是2,但是b变成了3;所以a+b=2+3=5;c++的值是3,c变成了4,但是以后再也没有用到c,所以sum=5+3=8;

C语言求值
nt WF(int x, int y){ x=x+y;\/\/x=3+5=8 y+=x;\/\/y=y+x;y=5+8=13 return x+y;\/\/13+8=21} 所以,第一题的结果是21 2.第一个LA计算的是数组的前三项和1+2+3=6,第二个是数组后三项的和3+4+5=12 所以输出b的值为6+12=18 ...

C语言调用函数求和差积商
return x+y ;} int cha (int x,int y){ return x-y ;} int ji (int x,int y){ return x*y ;} double shang (int x,int y) \/\/函数返回值类型修改double { return 1.0*x\/y;} void main (){ int a,b,c,d,e ;double f ; \/\/使用double scanf("%d,%d", &a, &b) ;...

c语言中怎么调用函数?谢谢
C语言中,函数调用的一般形式为:函数名(实际参数表)对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。include<stdio.h>int fun(int x, int y); \/\/ 函数声明,如果函数写在被调用处之前,可以不用声明void main(){int a=1...

C++编程中返回值问题
return t;它与“return(t);”等价。return 后面的值可以是一个表达式。例如,int max(int x,int y){ return(x>y?x:y);} 这样的函数体更为简短,只用一个 return 语句就把求值和返回都解决了。(2)返回值的类型。在定义函数时对函数值说明的类型一般应和 return 语句中的表达式类型一致。(...

关于C语言求值的问题
(x--,y++,x+y)是逗号运算结果是x+y!则r=func(x+y,z--);

C语言 表达式求值
(4+1)-5+(-3+1) = -2, a = 5, b = -2 (5+1)-5-4 = -3, a = 6, c = 6(注意这里c+++b会认为前两个++在一起,后面一个是单独的)这里认为上面三个式子是连续的三个式子,也就是说前面的运算结果会影响到后面的自变量,如果不是这样的,只要掌握方法也很容易就可以就算出来...

c语言,编写程序用scanf函数输入x的值,计算并输出y的值。
scanf("%d",&x);\/\/y不用输入 if (x<=1){ y=x;printf("%d\\n",y);} \/\/条件x<=1成立时,这两句都要执行,所以要用{}变成复合语句。else if(x>1&&x<10){ y=2*x+1;printf("%d\\n",y);} \/\/同上 else {y=3*x+1;printf("%d\\n",y);} \/\/同上 更好的是:scanf("%d",...

C语言求值
include <stdio.h> void main(){ int i,n,m=1;scanf("%d",&n);for(i=1;i<=n;i++)m*=n;printf("%d",m);} 数小行 大了你就得换类型了

关于对实参求值的顺序
自右向左应该是fun(4,4),书上写错了,在TC中编译就是自右向左的,在VC++6.0中是自左向右的

相似回答
大家正在搜