通过定义带参数的宏实现两个参数值的互换
2007-12-05 20:00
393 查看
#include
#define SWAP(x,y) t=x;x=y;y=t /*此处可改为#define SWAP(a,b) t=a;a=b;b=t不会影响程序的结果*/
void main()
{
int a,b,t;
printf("Please input two integers a,b:");
scanf("%d%d",&a,&b);
#ifdef SWAP /*如果SWAP被宏定义过,则执行#ifdef之后至#else之前的语句,否则就执行#else之后至#endif之前的语句*/
SWAP(a,b);
#else
t=a;
a=b;
b=t;
#endif
printf("Now: a=%d, b=%d/n",a,b); }
1.带参宏定义中的形参必须与实参的个数一致,否则在编译时将报错.
2.宏定义中的形参不必在main函数中的作类型定义.
如:#define SWAP(x,y) t=x;x=y;y=t中的x和y它们就没有在main函数中定义过,因为宏展开时SWAP(x,y)语句中的x和y将被实参a与b替换掉,并且该宏定义中出现的所有形参x、y都将被实参a与b替换
3.宏定义中形参括号外的字符(不含形参字符)必须在main函数中先定义.
如:#define SWAP(x,y) t=x;x=y;y=t中的t,必须先在main中作类型定义
#define SWAP(x,y) t=x;x=y;y=t /*此处可改为#define SWAP(a,b) t=a;a=b;b=t不会影响程序的结果*/
void main()
{
int a,b,t;
printf("Please input two integers a,b:");
scanf("%d%d",&a,&b);
#ifdef SWAP /*如果SWAP被宏定义过,则执行#ifdef之后至#else之前的语句,否则就执行#else之后至#endif之前的语句*/
SWAP(a,b);
#else
t=a;
a=b;
b=t;
#endif
printf("Now: a=%d, b=%d/n",a,b); }
1.带参宏定义中的形参必须与实参的个数一致,否则在编译时将报错.
2.宏定义中的形参不必在main函数中的作类型定义.
如:#define SWAP(x,y) t=x;x=y;y=t中的x和y它们就没有在main函数中定义过,因为宏展开时SWAP(x,y)语句中的x和y将被实参a与b替换掉,并且该宏定义中出现的所有形参x、y都将被实参a与b替换
3.宏定义中形参括号外的字符(不含形参字符)必须在main函数中先定义.
如:#define SWAP(x,y) t=x;x=y;y=t中的t,必须先在main中作类型定义
相关文章推荐
- 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- 3个参数通过两个判断语句实现3种状态
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- 【狂人c】-笔记之定义带参数的宏,实现两个数值互相交换的功能
- java中把两个变量进行值交换,通过异或两次运算就能实现值互换。
- 9.1 定义一个带参数的宏,使两个参数互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
- 通过另类的泛型约束将两个输入输出参数不同的方法合并成一个方法的实现
- [置顶] 通过python利用哈希值实现比较两个文件的一致性
- 每日一题:不适用第三个变量,实现交换两个输入参数
- 通过hidden隐藏域和URL参数(在一个处理页面实现不同的处理内容)
- 直接通过OptionalAttribute, DefaultParameterValueAttribute定义缺省参数
- 不借助中间变量实现两个变量值得互换
- C++类的声明与实现中容易忽视的重定义默认参数的错误
- iOS -- 通过runtime向Button的点击方法里传递参数实现单选效果
- 实现通过html传递参数
- 通过浮动+定位实现两个div在同一行
- strcpy_s不接受两个参数 String的实现
- 8266 执行./gen_misc.sh 通过管道实现默认输入参数,不用手动选择参数
- 通过共享内存,利用循环队列实现两个进程A,B之间的通信