本帖最后由 吾爱姚吕婧妍 于 2018-11-29 21:51 编辑
有点水 尴尬了
带参数的宏定义
[Asm] 纯文本查看 复制代码 //
#include<stdio.h>
#define MAX(a,b) a>b?a:b //主要讲讲这里
#define DOUBLE(a) (a)*(a)
int main()
{
int x,y;
printf("Into two number : ");
scanf("%d %d",&x,&y);
x=MAX(x,y);
y=DOUBLE(x);
printf("%d %d",x,y);
return 0;
}
/*a>b?a:b
这个其实就是一个条件判断
a>b 相当于 if(a>b)
?a:b 相当于成立 return a 、、不成立 return b
#define DOUBLE(a) (a)*(a) 中
<1>(a)*(a)与<2>a*a 的区别在于
如果是 <2> 当输入的值为x+y时 结果就是 x+y*x+y
如果是 <1> 当输入的值为x+y时 结果就是 (x+y)*(x+y)
计算结果有所不同*/
/*练习10-2 请完成下列宏定义
1.MIN(a,b) 求a,b的最小值
#define MAX(a,b) a>b?a:b
2.ISLOWER(c) 判断c是否为小写字母
#define ISLOWER(c) (((c)>='a')&&((c)<='z'))
3.ISEAP(y) 判断y是否为闰年
#define ISESAP(y) ((0==(y)%4)&&(0 !=(y)%100)) ||(0 ==(y)%400)
4.CIRFER(r) 计算半径为r的圆周长
#define CIRFER(r) 3.14*r
练习10-3 分别用函数和带参宏实现从3个数中找出最大数,请比较两者在形式上和使用上的区别。
#define EMAX(a,b) a>b?a:b
#define MAX(a,c) a>c?a:c
// 答案为 MAX(x,y,z) x>=y?(x>=z?x:z):(y>=z?y:z)
int max(int a,int b,int c)
if(a>b)
{
if(a>c)
return a;
else
return c;
}
else
{
if(b>c)
return b;
else
return c;
}
*/
|