我执行了以下代码
# define swap(a,b) temp=a; a=b; b=temp;
#include<stdio.h>
#include<conio.h>
main( )
{
int i, j, temp;
i=5;
j=10;
temp=0;
if( i > j)
swap( i, j );
printf( "%d %d %d", i, j, temp);
}
它给我输出为
10 0 0
我的问题是,即使
#define
语句是if(i>j)
,为什么false
宏也会执行? 最佳答案
在您的宏中添加大括号有助于确定代码范围。
当您编写不带花括号的宏时,它将以这种方式扩展。
if( i > j)
{
temp=a;
}
a=b;
b=temp;
但是,当您添加如下括号时:-
#define swap(a,b) {temp=a; a=b; b=temp;}
然后您的代码将按照您的期望执行
关于c++ - 我用宏执行了以下代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22015437/