十万火急 C语言问题!

以下两个程序结果为何不同?inta=2;inta=2,b;a=a++*1/3;b=a++*1/3;printf("%d",a);printf("%d",b);结果是1和0... 以下两个程序结果为何不同?
int a=2; int a=2,b;
a=a++*1/3; b=a++*1/3;
printf("%d",a); printf("%d",b);
结果是1和0
展开
 我来答
zheni2003
2009-01-18 · 超过17用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:58.8万
展开全部
你的结果各是多少呀,我的怎么一样!

呵呵,是不一样,看错了,

第一个是++写在后面是后加,拆开就成这样a=a*(1/3);a++;a先为0,然后自加一次,为1;;

后一个是b=a*(1/3);a++;b的值为0,而a自加一次,为3.

其实最关键的是a参与了一次运算,之后,将值赋给自己了,,自身改变了,在自加的,

后一个虽然有运算,但没改变自身,直接自加的。
john1202
2009-01-17
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
没分啊。。。
算了
2/3+1=1
2/3=0
还不懂的话加5650807c高手群吧
不过好像满了哎~~!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nick_Jiang
2009-01-17 · TA获得超过293个赞
知道答主
回答量:144
采纳率:0%
帮助的人:52.3万
展开全部
在遇到";"之前,A++的"++"是不进行运算的,它将在遇到";"才进行运算.
故左边的程序等价于:
a=a*1/3; //a=0
a=a+1; //a=1;

而右边的程序也等价于:
b=a*1/3; //a=2,b=0
a=a+1; //a=3

PS: 而++A则是即时运算的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我在107号牢房
2009-01-17
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
按顺序先 计算a=a++*1/3; a++就是3 , 3*1/3就是1 所以第一个输出是1

此时a就是1 , 再计算b=a++*1/3; 这里a++就是2 , 2*1/3就是0(整数/整数 结果就是求整整数) 所以这里输出是 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式