您的位置:首页 > 编程语言 > C语言/C++

关于C语言中的自加运算符问题

2012-11-12 13:38 232 查看
这是一道笔试题,问的是输出结果是什么?:
#include <stdio.h>
#define pro(x) (x*x)
int main()
{
int x = 3, k, j;
j = pro(x++);
k = pro(++x);
printf("j = %d, k = %d, x = %d\n", j, k, x);
return 0;
}

答案是:9 49 7
可能有些朋友对于49这个结果有些意外,但确实就是,不信你可以在gcc或者vc++下编译看看。
下面我们来分析下原理:
整个表达式的运算过程是:
1、进行所有的前缀单目运算
2、取所有单目运算对象的当前值作为表达式的计算结果
3、进行所有的后缀单目运算
依据第1点,我们知道,在运算pro(++x),程序是先运行了两次++x后再从X的地址上取出X值来进行x*x运算,所以得到的结果就是49.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: