
十万火急 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 展开
int a=2; int a=2,b;
a=a++*1/3; b=a++*1/3;
printf("%d",a); printf("%d",b);
结果是1和0 展开
4个回答
展开全部
你的结果各是多少呀,我的怎么一样!
呵呵,是不一样,看错了,
第一个是++写在后面是后加,拆开就成这样a=a*(1/3);a++;a先为0,然后自加一次,为1;;
后一个是b=a*(1/3);a++;b的值为0,而a自加一次,为3.
其实最关键的是a参与了一次运算,之后,将值赋给自己了,,自身改变了,在自加的,
后一个虽然有运算,但没改变自身,直接自加的。
呵呵,是不一样,看错了,
第一个是++写在后面是后加,拆开就成这样a=a*(1/3);a++;a先为0,然后自加一次,为1;;
后一个是b=a*(1/3);a++;b的值为0,而a自加一次,为3.
其实最关键的是a参与了一次运算,之后,将值赋给自己了,,自身改变了,在自加的,
后一个虽然有运算,但没改变自身,直接自加的。
展开全部
没分啊。。。
算了
2/3+1=1
2/3=0
还不懂的话加5650807c高手群吧
不过好像满了哎~~!
算了
2/3+1=1
2/3=0
还不懂的话加5650807c高手群吧
不过好像满了哎~~!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在遇到";"之前,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则是即时运算的
故左边的程序等价于:
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则是即时运算的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按顺序先 计算a=a++*1/3; a++就是3 , 3*1/3就是1 所以第一个输出是1
此时a就是1 , 再计算b=a++*1/3; 这里a++就是2 , 2*1/3就是0(整数/整数 结果就是求整整数) 所以这里输出是 0
此时a就是1 , 再计算b=a++*1/3; 这里a++就是2 , 2*1/3就是0(整数/整数 结果就是求整整数) 所以这里输出是 0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询