啊哈磊_编程从这里起步
标题:
关于自增的运算一直不明白的地方
[打印本页]
作者:
哎呀呀
时间:
2014-1-29 11:02
标题:
关于自增的运算一直不明白的地方
我刚学C,里面关于自增的运算,一直不明白,下面是我我自己写的,为了跟进哪出错,所以写的比较繁琐,见谅:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=8,b=5,c=5,d=5,e=5,f=5,x,y,z,l,m,n;
printf("%d\n",++a); /*输出9*/
printf("%d\n",--a); /*输出8*/
printf("%d\n",a++); /*输出8后a值为9*/
printf("%d\n",a--); /*输出9后a值为8*/
printf("%d\n",-a++); /*输出-8后a值为9*/
printf("%d\n",-a--); /*输出-9后a值为8*/
printf("此时a值为%d\n",a); /*此时a值应为8*/
x=(b++)+(b++)+(b++); /*b值先相加,在自增三次*/
printf("x=%d\nb=%d\n",x,b); /*输出结果x=15,b=8*/
y=(++c);
printf("y=%d\nc=%d\n",y,c);
z=(++d)+(++d);
printf("z=%d\nd=%d\n",z,d); /*d先自增两次为7,在参与合运算为z=14*/
m=(++e)+(++e)+(++e);
printf("m=%d\ne=%d\n",m,e);
n=(++f)+(++f)+(++f)+(++f);
printf("n=%d\nf=%d\n",n,f);
system("pause");
return 0;
}
前面的都没有问题,有问题的就是红字的两行。e和f初值都为5,那m的运算应该是e自增三次后在参与和运算,故m=24才对,但实际上得到的m=22
但此时,e=8,可见己经自增了三次。同理,n=36才对,但实际上是n=31。f=9.
请问是哪出错了,为什么m和m的值和书上理论算出来的不一样呢?
作者:
rosynirvana
时间:
2014-1-29 11:02
未定义
看一楼的回复
http://bbs.ahalei.com/forum.php?mod=viewthread&tid=4248
简而言之就是自增自检改变变量值的那个效果不是立刻结算的
作者:
哎呀呀
时间:
2014-1-29 11:33
rosynirvana 发表于 2014-1-29 11:02
未定义
看一楼的回复
http://bbs.ahalei.com/forum.php?mod=viewthread&tid=4248
谢谢您,原来C里面还有这么一说。刚起走,看来以后还要有很长的路要走。
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2