Chinaunix首页 | 论坛 | 博客
  • 博客访问: 534062
  • 博文数量: 118
  • 博客积分: 3995
  • 博客等级: 中校
  • 技术积分: 1276
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-15 12:15
文章分类

全部博文(118)

文章存档

2014年(1)

2013年(1)

2010年(6)

2009年(27)

2008年(10)

2007年(33)

2006年(38)

2005年(2)

我的朋友

分类: C/C++

2007-04-11 21:51:34


下面4段简短代码,注意输出结果


static int
p(int x){
        return x*x;
}
int
main(){
        int i=3;
        printf("%d %d\n",i,
p(i++));
}

输出:
4 9

static int
p(int x){
        return x*x;
}
int
main(){
        int i=3;
        printf("%d %d\n",i,p(++i));
}

输出:
4 16

#define p(x) ((x)*(x))
int
main(){
        int i=3;
        printf("%d %d\n",i,
p(i++));
}

输出:
5 9

#define p(x) ((x)*(x))
int
main(){
        int i=3;
        printf("%d %d\n",i,
p(++i));
}

输出:
5 25

上面是在gcc编译器下的输出结果,由于C语言标准并没有规定函数的各个参数的求值顺序,所有输出值的第一个列会因编译器的不同而不同.

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