//define 定义标识符常量#define MAX 1000//define 定义宏#define ADD(x, y) ((x)+(y))#include <stdio.h>int main (){int sum = ADD ( 2 , 3 );printf ( "sum = %d\n" , sum );sum = 10 * ADD ( 2 , 3 );printf ( "sum = %d\n" , sum );return 0 ;}
define 是 一个预处理命令
1.define 定义符号
#define MAX 1000 //MAX代替了1000
int main()
{
printf("%d\n",MAX);//输出结果为1000
return 0;
}
2.define 定义宏
#define ADD(X,Y) X+Y
int main()
{
//printf("%d\n",ADD(2,3));//输出结果为 5
printf("%d\n",4*ADD(2,3));//输出结果为 11
根据宏传递 4*2+3 这里的宏是替换的
return 0;
}
改进:
#define ADD(X,Y) ( (X)+(Y) ) //最标准
不能把X和Y当做普通的变量,他有可能是表达式所以用括号括起来
int main()
{
//printf("%d\n",ADD(2,3));//输出结果为 5
printf("%d\n",4*ADD(2,3));//输出结果为 20 ,传递过来 ( (X)+(Y) ),根据优先级先算括号里面的
return 0;
}
#define ADD(X,Y) (X)+(Y)
不能把X和Y当做普通的变量,他有可能是表达式所以用括号括起来
int main()
{
//printf("%d\n",ADD(2,3));//输出结果为 5
printf("%d\n",4*ADD(2,3));//输出结果为 11,因为传递过来的是(X)+(Y),所以按照优先级计算4*2+3
return 0;
}
#define ADD(X,Y) (X+Y)
不能把X和Y当做普通的变量,他有可能是表达式所以用括号括起来
int main()
{
//printf("%d\n",ADD(2,3));//输出结果为 5
printf("%d\n",4*ADD(2,3));//输出结果为 20,因为传递过来的是(X+Y),所以按照优先级计算,先计算括号里面的
return 0;
}