还是自增自减的困惑

发布时间:2024-05-12 20:00 发布:上海旅游网

问题描述:

程序:
#include<stdio.h>
void main()
{
int a=3,x;
x=(a++)*(++a);
printf("x=%d\n",x);
printf("a=%d\n",a);
}
运行结果
x=16
a=5

这个我非常不理解,表达式“x=(a++)*(++a)”中,
个人认为“a++”的值为3,其中a的值为4;
“++a”的值为4,a的值为4
两者相乘,积为12
但是结果不对,那我反思一下,"a++"值不变;
但因为“a++”的关系a值已为4,那么“++a”的值为5,a的值也为5,
两者相乘,结果应为15呀。
为什么是16????
问题到底出在哪里??

问题解答:

我以前看过这方面的专业书说这类式子要倒过来计算,就是说县从++a搞起,你看++a=4,是不是刚好?

这些表达式的结合规则是:自右向左结合的...

热点新闻