#define是C语言中提供的宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。#define可以给程序员带来很多方便,但如果使用不当会带来很多麻烦。
当替换文本所表示的字符串为一个表达式时,容易引起误解和误用。
如
#define N 2+2
void main()
{
int a=N*N;
printf(“%d”,a);
}
很多同学会把这题结果误认为是16,然而实际上结果是8。这是因为宏展开是在预处理阶段完成的,这个阶段把替换文本只是看作一个字符串,并不会有任何的计算发生,在展开时是在宏N出现的地方只是简单地使用串2+2来代替N,并不会增添任何的符号,所以对该程序展开后的结果是a=2+2*2+2,计算后=8。
|
|