C语言关于自加自减运算的问题,求解!

[复制链接]
查看11 | 回复1 | 2011-8-27 11:17:51 | 显示全部楼层 |阅读模式
#include
int main()
{
        void abc0(int);
        void abc1(int);
        int a=5,b;
        abc0(a);
        abc1(a);
        b=++a*--a;
        printf("b=%d\n",b);
        return 0;
}
void abc0(int a)
{
        printf("++a=%d\n",++a);
}
void abc1(int a)
{
        printf("--a=%d\n",--a);
}
问题是++a的值为6,--a的值为5,为什么++a*--a的值确实25呢?
++a这个表达式的值不应该是6吗?


回复

使用道具 举报

千问 | 2011-8-27 11:17:51 | 显示全部楼层
因为++a的优先级高于乘法,所以++a*--a的计算顺序为,++a:a(此时a=5)=a+1=6,再计算--a:a(此时a=6)=a-1=5;最后计算a*a=5*5...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行