请写出一个宏定义SWAP(t,x,y),用以交换t类型的两个参数。

时间:2021-11-16 02:44:17
问题很白痴,谢谢了
答案说是SWAP(t,x,y)  (t temp;temp=x;x=y;y=temp;)
这是什么意思,t不是一个参数吗,怎么又变成类型了?
能详细的讲解吗,谢谢了。

14 个解决方案

#1


这个SWAP是一个通用型的

反正宏就是一种展开拉

展开后,不就是

比如SWAP(int,a,b)

int temp;
temp = a;
a = b;
b = temp;

#2


试一下宏替换就知道了
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;

但是在C中这样用有问题

#3


因为宏名无类型,其参数也无类型。这是与函数不同的一个地方。

#4


宏展开来看看就明了了。

#5


是不是说这里的t代表int

#6


引用 5 楼 lxw19900825 的回复:
是不是说这里的t代表int

你写int自然就代表int了

宏你只要看展开后的就行了,和函数不同,宏定义没有类型的

#7


红的工作原理就是  替换

#8


可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了

#9


t可以用作不同类型。。。如int,double等
引用 8 楼 lxw19900825 的回复:
可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了

#10



#incldue <stdio.h>
#define SWAP(t,x,y) (t temp;temp=x;x=y;y=temp;)

int main()
{
    int a=1;
    int b=2;
    printf("a=%d,b=%d\n",a,b);
    SWAP(int,a,b)
    printf("a=%d,b=%d\n",a,b);
}

SWAP(int,1,2)相当于

(int temp;
temp=x;
x=y;
y=temp;)

#11


请写出一个宏定义SWAP(t,x,y),用以交换 t类型的两个参数

#12


引用 10 楼 piaojun_pj 的回复:
C/C++ code

#incldue <stdio.h>
#define SWAP(t,x,y) (t temp;temp=x;x=y;y=temp;)

int main()
{
    int a=1;
    int b=2;
    printf("a=%d,b=%d\n",a,b);
    SWAP(int,a,b)
    printf("a=%d,b=%d……

看实参传递的类型就知道了

#13


谢谢各位

#14


宏调用还是挺好用的

#1


这个SWAP是一个通用型的

反正宏就是一种展开拉

展开后,不就是

比如SWAP(int,a,b)

int temp;
temp = a;
a = b;
b = temp;

#2


试一下宏替换就知道了
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;

但是在C中这样用有问题

#3


因为宏名无类型,其参数也无类型。这是与函数不同的一个地方。

#4


宏展开来看看就明了了。

#5


是不是说这里的t代表int

#6


引用 5 楼 lxw19900825 的回复:
是不是说这里的t代表int

你写int自然就代表int了

宏你只要看展开后的就行了,和函数不同,宏定义没有类型的

#7


红的工作原理就是  替换

#8


可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了

#9


t可以用作不同类型。。。如int,double等
引用 8 楼 lxw19900825 的回复:
可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了

#10



#incldue <stdio.h>
#define SWAP(t,x,y) (t temp;temp=x;x=y;y=temp;)

int main()
{
    int a=1;
    int b=2;
    printf("a=%d,b=%d\n",a,b);
    SWAP(int,a,b)
    printf("a=%d,b=%d\n",a,b);
}

SWAP(int,1,2)相当于

(int temp;
temp=x;
x=y;
y=temp;)

#11


请写出一个宏定义SWAP(t,x,y),用以交换 t类型的两个参数

#12


引用 10 楼 piaojun_pj 的回复:
C/C++ code

#incldue <stdio.h>
#define SWAP(t,x,y) (t temp;temp=x;x=y;y=temp;)

int main()
{
    int a=1;
    int b=2;
    printf("a=%d,b=%d\n",a,b);
    SWAP(int,a,b)
    printf("a=%d,b=%d……

看实参传递的类型就知道了

#13


谢谢各位

#14


宏调用还是挺好用的