首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

带参数的宏定义解决方法

2012-06-19 
带参数的宏定义C/C++ code#define SWAP(a,b) tbbaat#include stdio.hint main(void){int a0,b0,

带参数的宏定义

C/C++ code
#define SWAP(a,b) t=b;b=a;a=t;#include <stdio.h>int main(void){    int a=0,b=0,c,d,t=0;    printf("Input two integers a,b:");    scanf("%d,%d",&c,&d);    SWAP(c,d);    printf("NOW,a=%d,b=%d\n",a,b);    return 0;}

为什么c,d的值没有将a,b替换?

[解决办法]
C/C++ code
//终于明白你的意图了SWAP(a,b) //这里的a和b相当于一个参数,预处理后就没有a和b这两个东西了,宏中的a和b会被替换你应该再回去看下基础教材//gcc预处理结果int main(void){    int a=0,b=0,c,d,t=0;    printf("Input two integers a,b:");    scanf("%d,%d",&c,&d);    t=d;d=c;c=t;;    printf("NOW,a=%d,b=%d\n",a,b);    return 0;}
[解决办法]
SWAP(c,d);展开后的情况是这样:t=d;d=c;c=t,是c与d的值互换了,这个展开式中,根本没有出现a,b所以a,b的值仍为0!

热点排行