设有宏定义如下:
define MIN ( x , y )__( x )>( y )?( x ):( y )
define T ( x , y , r ) x * r * y /4
则执行以下语句后,s1的值为【1】,s2的值为【2】。
int a =1, b =3, c =5,s1,s2;
s1= MIN ( a = b , b - a );
s2= T ( a ++, a ++ b , a + b + c );
关于s2我的思路是:宏直接替换
替换后的表达式:a++a++ba+b+c/4
因为在s1中a被赋值3,所以此刻a为3。
因为++优先级高所以先算,
所以数值替换后的表达式为:
344*4+4+5/4,再先算乘除再算加减,得197
但是有人说是28,devc++跑出来是35。所以表达式s2的运算顺序是怎么样的,怎么就能算出28/35呢