C语言 宏定义一大堆, 刚学都会迷糊
如
#define sqrt(x) (x*x)与#define sqrt(x) x*x 的区别,
前者为正确定义,后者将不能计算出正确的平方
#include <stdio.h>
#define sqrt(x) x*x
void main(void)
{
int x=3;
printf("%d", 10/sqrt(3)/sqrt(3));
}
此例将输出结果为: 9
因为10/sqrt(3)/sqrt(3)); 将相当于 10/3*3/3*3 = 9
如果将#define sqrt(x) x*x 改成 #define sqrt(x) (x*x)
这时10/sqrt(3)/sqrt(3)); 将相当于 10/(3*3)/(3*3) = 0, 一定要注意宏义时括号的用法.