关于c语言的运算符

新手上路,请多包涵

include<stdio.h>

main(){

int b=4,c;
c=b+=b--;
printf("%d",c);
}

结果为什么是7,运算的执行顺序是什么

阅读 1.5k
1 个回答

亲测: c = 8 . b = 7
说明了 --运算符在整个右边表达式执行完毕后才赋的值
在其他语言中. c=b=8.


补充一下:这个问题好像并没有这么简单

昨天试了一下.举个例子

int a = 1;
a = a + a--;

如果在c语言中,那么a的结果就是0.

当执行a = a + a--时,先执行=号右边的表达式,那么右边的表达式是2.
把2的值写入到a的内存中.
然后在执行a--,那a指向的内存就修改成了1.

在其他语言中
执行a = a + a--时,右边表达式计算完,不写入内存,执行--操作,把--后的值1写入内存,
然后在把整个右边表达式的结果赋值给a指向的内存,那么a指向的内存就变成了2.

区别就在写入内存的时间不同.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进