c语言求解1

来源:百度知道 编辑:UC知道 时间:2024/05/09 02:33:58
#include<stdio.h>
func(inta,intb)
{
int c
c=a+b
return c
}
main()
{
int x=2,y=4,z=6,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}

12

(x--,y++,x+y)这个表达式值为6,这是一个逗号表达式
z--这是个表达式,是个整体,这个表达式值为6,但是执行完z--以后,z的值变为了5

Turboc下是12

二楼的答案是对的。
例如:x--,--x前者是说在使用这个数之后减1,后者就是在使用这个数之前-1.

答案是:12
如果编程序的话记住不要落那么多分号(定义函数部分),“++”和“--”在变量后是先使用变量值再自加,如x=1时x++是先使用x的值1然后再执行x=x+1,++x则是先执行x=x+1再使用x的值,执行后x变为1,y变为5,z=6使用后变为5。逗号表达式前面的语句仍然执行,但它的值是最右边表达式的值。说的有点罗嗦,希望对你有用,呵呵!

12

答案 12
讲解如下:
r=func((x--,y++,x+y),z--);中(x--,y++,x+y)是一个逗号表达式,值为最后一个表达式的值。这里x--后x=1,y++后y=5,所以(x--,y++,x+y)的值就是x+y,等于1+5=6。
所以r=func((x--,y++,x+y),z--);即为r=func(6,z--);
而z--是先运算后,z才减1,所以r=6+6=12.
讲得不太好,希望明白!~