c语言自加运算符

来源:百度知道 编辑:UC知道 时间:2024/09/22 18:30:23
程序
main()
{
int a=5;
a++;
printf("%d",a);}
的运算结果为什么是6而不是5,自加符号放在后面是先运算后加一吗,如果是的话结果应该是5 啊
我要详细的!! 要针对这个题 下面的例子我都看过

a++其实相当与a=a+1
++a也是相当与a=a+1
其两者最大的区别是:
a++是先执行语句再自加运算
++a是先自加再执行该语句,比如:
int a=0,b=0;
b=++a;
printf("%d",b);//这时b=1,因为a先自加1再赋值给b,即a=1
==============================
int a=0,b=0;
b=a++;
printf("%d",b);//这时b=0,因为a先赋值给b,然后a再自加1,即a=1
------------------------------------------------------------
很明显楼主还没明白我的意思,我的“执行该语句”是执行a++或++a所在的语句,而不是整个程序本身,你的例子a++不就只是一条语句而已嘛,a++这条语句执行完后,a就自加1,然后再执行a++下面的语句,所以a++下面的printf("%d",a);语句里面的a值已经是自加后的了,所以就是6

呵呵,这个问题,钻牛角尖里了

a++; 没错,先运算 后自加;先取得a的值5,取完之后干什么呢?返回?其他运算?也没有要求它返回阿?也没有其他运算阿?所以 “先运算” 到此就完毕了,接着干什么?当然是 “自加”,a 就成了6了,输出6 难道有什么问题吗?
你还想等printf后再 “自加”? 那要没有printf直接返回了,岂不永远也自加不了了?

先运算 后自加 或者其他,都是说 “在表达式内部的先后次序”,离开这个表达式,运算已经完成了,a++后面的分号,表明表达式已经结束了

如果还不能理解,那就改行吧

详细?难道要我给你上反汇编吗?不用了吧,新手看不懂哈。

不过无论是a++还是++a,其最终的结果都是会给a加上一个1.

它们的区别在于和其它表达式混用的时候,
比如说int b = a++;如果a原来是5的话,那么系统先把5传给b,然后再给a加1