c语言中增一减一运算的一个问题~~!

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:50:00
#include <stdio.h>
void main()
{
double a=1.2,b=1.5;
a=a++ +b--;
printf("%.2lf,%.2lf",a,b);
}

为什么输出结果是3.70,0.50 而不是2.70,0.50?
a=a++ +b--;这个算出来应该是a=2.7不是吗?
是不是说a=a++ +b--; 只要表达式里有a++,最后算出来的值都要自增啊?

a++ + b-- =2.7
这时a=2.7;a++是先使用a 再使a+1;等到输出的时候 a再加1;因为a=2.7时是先使用a的值 和 b的值相加得到的值,a还没有自加,输出的a要再加1,b要减1.

是3.7和0.5
因为a线参与运算1.2+1.5 ,然后自加
然后赋值
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左
http://zhidao.baidu.com/question/72432961.html?si=1

可是你后来a自增了。输出的a是最新的也就是自增后的

这题只可能出现在考试卷子上。
真正写代码的时候,是没人这么写的,可读性太差了!

其实,你这条语句,等于是 a = 1.2 + 1.5 但是执行完这一句之后,a又被加了1,所以变成了3.7 而b做了--操作,所以变成了0.5

原因:
1.编译器扫描a=a++ +b--;
2.发现++操作是在变量之后
3.对式子进行运算,但不改变变量的值。
4.这条语句运算完,将a++ b--,
5.你打印出来的结果,