Chinaunix首页 | 论坛 | 博客
  • 博客访问: 118039
  • 博文数量: 31
  • 博客积分: 2035
  • 博客等级: 大尉
  • 技术积分: 339
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-29 07:30
文章分类
文章存档

2011年(1)

2010年(20)

2009年(10)

我的朋友

分类:

2009-08-27 00:14:10

#include <stdio.h>
#define SQUARE(X) X*X
#define PR(X) printf("The result is %d.\n",X)
int main(void)
{
    int x=4;
    int z;
    z=SQUARE(x);
    PR(z);
    z=SQUARE(2);
    PR(z);
    PR(SQUARE(x+2));
    PR(SQUARE((x+2)));
    PR(100/SQUARE(2));
    PR(100/(SQUARE(2)));
    PR(SQUARE(++x));
    PR(SQUARE((++x)));
    getch();
    return 0;
}

运行结果如下:

The result is 16.
The result is 4.
The result is 14.
The result is 36.
The result is 100.
The result is 25.
The result is 30.
The result is 56.

简单比对一下结果:
    PR(SQUARE(x+2));为4+2*4+2=14
    PR(SQUARE((x+2)));为(4+2)*(4+2)=36
    PR(100/SQUARE(2));为100/2*2=100
    PR(100/(SQUARE(2)));为100/(2*2)=25
    PR(SQUARE(++x));为++x*++x=(4+1)*(5+1)=30
    PR(SQUARE((++x)));(++x)*(++x)=(6+1)*(7+1)=56
宏运算首先要将宏表达式展开,然后再代入,展开表达式不要随便带括号,要考虑运算优先级



阅读(243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~