这段代码调用的fun函数为什么输出的结果是九,谁能给我讲讲r=fun((x--,y++),z--)是怎么运行的吗?#include

2024-12-04 23:14:19
推荐回答(3个)
回答(1):

首先,程序里面用到的自减“--”操作放在了变量后面,是后减减,后减减之后本表达式的值不会变,前减减才会减一。举例,a=2;b=a--;那么b还是等于2,只是a变成了1.如果a=2;b=--a;那么b=1.后减减执行顺序是这样的:先将变量的值赋给整个表达语句,再将变量减一。前减减是先将变量的值减一,再赋给整个表达式。所以会出现上述情况。
另外,程序中(x--,y++)属于逗号表达式,整个表达式的值等于最后一个逗号后面的表达式的值。它的执行步骤是先从左到右执行表达式,再将最后一个表达式的值作为整个逗号表达式的值。举例,如c=(a=1,a++,b=a),这句话执行之后,a=2,b=2,c=2.所以程序中的(x--,y++)实际上就是y++,而y++是后加加,所以y++这句表达式的值是y,还等于4。Z--是后减减,Z虽然变成了4,但是Z--这个表达式的值还是5,所以就相当于fun(4,5),最后当然等于9.

回答(2):

首先fun((x--,y++),z--);其中(x--,y++)是逗号表达式,只取逗号后面的值班,你看的书上一定有的,另外x--,和--x是不一样的,前者是先调用x值再让x加一,后者是先让x加一,再调用x.
比如:int a,b,c;
b=1;
a=b++;//此时a=1;
c=++b;//此时b=2;可以上机试试下

回答(3):

函数在哪啊,只给了个调用。怎么说啊