#include<stdio.h> fun(int x ,int y) {return(x+y);} void main() { int a=1,b=2,c=3,sum; sum=fun((a++,

运行结果是6还是8,题中的(a++,b++,a
+b)其结果难道不是3吗,愿赐教!!!;
#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);
}

我看楼主是纠结在逗号表达式运算上啦,基础不扎实哦,呵呵!逗号表达式从左到右一次计算,结果返回最后一个值!如此对照你的函数,就一目了然了!(a++.b++,a+b) 返回结果是a+b;根据逗号表达式运算法则,a,b各自加了一次 于是a+b=2+3 = 5;在传给fun函数 该函数赶回结果为8;回答完毕 希望楼主能解你的惑追问

那题中(a++.b++,a+b)改为(++a,++b,a+b)后答案又是多少呢?a++书上说是用a之后a才会加1,比如{a=1,printf("%d",++a)}输出是1然后才变成2,那怎么原来的题中怎么还没有用a怎么就会先加了1变成2呢!难道这就是逗号表达式的特点!!!请赐教哦……

追答

不得不说你进入了个误区,表达式(a++,b++,a+b)中,第一个逗号完了的时候,表示a已经被使用完了,故a自己一次,b也同理!

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-21
自己算下不就出来了
整个运算流程
a++ ; a =2
b++ ; b =3
a+b = 5
a+b+c++ 后自增,应该知道吧,先运算再自增,5 +3 = 8 ,c = 4
所以答案如同一楼所写,是8
第2个回答  2011-03-21
同意楼上的看法,fun的第一个参数是一个逗号表达式,执行完后,该逗号表达式的值是5.
第3个回答  2011-03-21
问题都没写完追问

不好意思 补充啦您赐教

追答

sum=fun((a++,b++,a+b),c++);

关键在这句话 FUN函数有两个参数
(a++,b++,a+b)
整体被看作是一个参数 】
然后从左到右执行 a++完了 A变成2,b++完了B变成3 A+B就是5,然后将A+B作为第一个参数 C++作为第二个参数进入FUN
a+b+c=8 最后输出8

...int fun(int x,int y){return (x+y);} main() {int a=1,b=2...
:8

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语言程序题中main函数的fun函数怎么理解?
main函数的fun函数的两个实参,分别为(a++,b++,a+b)和 c++ 前者是一个逗号表达式,从左向右计算,其值为最后a+b的值,等于2+3=5 c++是一个后自增表达式,先取c的值传递到形参,然后c再自增。传递的值是3。所以,最后程序的输出是8。

fun(int x,int y,int z){z=x*x+y*y;}main(){int a=31;fun(5,2,a);p...
也可以通过指针所指来修改地址值 也就是 void fun (int ,int int * )

int a=1,b=2,c;c=func(a,&b)是什么意思?
func(a,&b)中 &b是指 把b的地址 传给func 加入func是求和功能 一个小示例与你分享 include<stdio.h>\/\/求 x和 地址y所指的值 的和int func(int x, int* y){ return x + *y;}int main(){ int a = 1, b = 2, c; c = func(a, &b); printf("%d+%d=%d\\n...

...fun (int x,int y) { if (x!=y) return ((x+y);2); e
根据你给的信息,我发现你这个程序有好多问题,多的不好说,于是我据你的意思自己写了一下这个程序,如下:include<stdio.h> int main(){ int fun(int x,int y);int a=4,b=5,c=6;printf("%d\\n",fun(2*a,fun(b,c)));return 0;} int fun(int x,int y){ if(x!=y) return((...

C语言如何调用函数
include<stdio.h>int fun(int x, int y); \/\/ 函数声明,如果函数写在被调用处之前,可以不用声明void main(){int a=1, b=2, c;c = fun(a, b); \/\/ 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值}\/\/ 自定义函数funint fun(int x, int y) \/\/...

...#include <stdio.h> int fun(int x) { int y=1;
输出结果:8 10 12 此处每个数字间要留2个空位 注意z的类型是static的,所以z的值是固定的!

计算机二级考试题
fun(int x,int y){return(x+y);} main() {int a=1,b=2,c=3,sum; sum=fun((a++,b++b,a+b),c++); printf("%d\\n",sum); } 执行后的输出结果是 A)5 B)7 C)8 D)3(25)执行下面的程序段后,变量k中的值为 int k=3, s[2]; s[0]=k; k=s[1]*10; A)不定值 B)35 C)31...

...b) { return(2*a+b); } void main() { int x=2,y=5,z=8,r; r...
include int func(int a,int b){ int c;c=a+b;return c;} main(){ int x=6,y=7,z=8,r;\/\/(x--,y++,x+y)为逗号表达式,取最后一项的结果,即x+y==13 r=func((x--,y++,x+y),z--);\/\/因为z--为后减减,所以调用函数相当于调用func(13,8)printf("%d\\n",r);\/\/输出...

相似回答