答案说是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;
反正宏就是一种展开拉
展开后,不就是
比如SWAP(int,a,b)
int temp;
temp = a;
a = b;
b = temp;
#2
试一下宏替换就知道了
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;
但是在C中这样用有问题
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;
但是在C中这样用有问题
#3
因为宏名无类型,其参数也无类型。这是与函数不同的一个地方。
#4
宏展开来看看就明了了。
#5
是不是说这里的t代表int
#6
你写int自然就代表int了
宏你只要看展开后的就行了,和函数不同,宏定义没有类型的
#7
红的工作原理就是 替换
#8
可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了
#9
t可以用作不同类型。。。如int,double等
#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
看实参传递的类型就知道了
#13
谢谢各位
#14
宏调用还是挺好用的
#1
这个SWAP是一个通用型的
反正宏就是一种展开拉
展开后,不就是
比如SWAP(int,a,b)
int temp;
temp = a;
a = b;
b = temp;
反正宏就是一种展开拉
展开后,不就是
比如SWAP(int,a,b)
int temp;
temp = a;
a = b;
b = temp;
#2
试一下宏替换就知道了
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;
但是在C中这样用有问题
如 SWAP(int,a,b)
替换为
int temp;temp=a;a=temp;
但是在C中这样用有问题
#3
因为宏名无类型,其参数也无类型。这是与函数不同的一个地方。
#4
宏展开来看看就明了了。
#5
是不是说这里的t代表int
#6
你写int自然就代表int了
宏你只要看展开后的就行了,和函数不同,宏定义没有类型的
#7
红的工作原理就是 替换
#8
可题目上说的是t,不是int呀,,t是不是int的缩写,谢谢了
#9
t可以用作不同类型。。。如int,double等
#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
看实参传递的类型就知道了
#13
谢谢各位
#14
宏调用还是挺好用的