C语言 #define

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:09:13
#define s(x,y) x=x+y , y=x-y, x=x-y
void main( ){
int a=12, b=9;
s (a,b);
cout<<a<<”,”<<b;
}
宏定义s(x,y)的含义?程序输出结果是什么?每句程序解释一下,尤其是第一句

s(x,y)
这个宏的作用是交换x和y的值:

x=x+y;/*x的值被重新设置为原x的值和原y值的和,之后,y值不变,还是原来的值*/

y=x-y;/*这里的x是原x值和原y值的和,那么和减去原来的y值,就是原来的x值,所以,此后,y的值被重新设置原x的值*/

x=x-y;/*等号右边的x的值是原x值和原y值的和,而这里的y已经在上面的语句中被设置为了原x的值,所以这里的x-y的值就是原y值,因此,这里将x的值重新设置为原y的值*/

9,12
就相当于定义了这么一个函数
a=12+9
b=21-9
a=21-12

因为是一个逗号表达式,所以从左到右依次计算也就是说
x = 21,y = 21 - 9 = 12;x= 21 - 12 =9;

结果就是9,12