c语言 r = func((x--, y--, x + y), z--); 为什么x和y自减了,而z没有,结果是19

Python030

c语言 r = func((x--, y--, x + y), z--); 为什么x和y自减了,而z没有,结果是19,第1张

这里用到的都是后缀 --。 后缀 -- , 在表达式里用原来的数值,退出表达式后 才自减1。

r = func((x--, y--, x + y), z--)

要分解成:

(1)参数a, 它是逗号表达式进一步拆成: x-- y-- a=x+y (a得11)

(2)参数b, b = z (b得8); z=z-1

(3)调用函数: r = func(a,b) (r = a+b-1 r得 18);

若这时输出 x,y,z 的值,你会发现 各减了1,变 5,6,7 了。

三目运算符:如果问号前面的表达式为真,那么整个表达式的值就等于冒号前面的那个数

如果a<b为真,表达式等于a<d?a:d;

如果a<b为假,表达式等于c<d?a:d;

然后再判断:a<d或者c<d;