来个高手指点下,这段程序是不是本身有问题?
算出来的结果为什么是错的?
希望可以详细的解说一下!
#include <stdio.h>
void main()
{
int a,b,c;
b=5;c=5;
a=++b+c--;
printf("%d,%d,%d\n",a,b,c);
a=b---c;
printf("%d,%d,%d\n",a,b,c);
a=-b+++c;
printf("%d,%d,%d\n",a,b,c);
}
这段程序运行出的结果为:
11,6,4
2,5,4
-1,6,4
我想了十几分钟越想这个结果越不对!
其中第一个输出a=++b+c--
那么b应该是5+1=6,b的结果是6
c应该是c-1=4 ,c的结果为4
那么a=++b+c--其运算和a=6+4相同
输出结果应该为:
10
而上面的为11
这是为什么啊?
第一个输出结果中的6和4我可以理解可以那个11我是想不明白啊!
非常谢谢下面几位的回答可以我还是没搞懂,我是刚开始学C语言的,不过这个难关没法往下学!
我再看下视频,在线等!再次加分,我把全部的分都用上!
第一个输出结果搞懂了,是先算b=b+1,再算a=b+c,最后再算c-1!
结果为11,6,4是正确的!
第二个和第三个输出结果如果说b和c的结果为第一个运算所给的数的话,第二个输出结果:2,5,4
我只能明白5,4其中的我不明白为什么会输出2!
第二个输出结果搞懂了,可是又卡在第三个输出结果上了!
不明白-1这个数,如果说b和c都是第一个运算式所给出的值的话,那么第三个输出结果中的6和4很好明白,就是这个-1有点让人摸不着头脑?
希望有好心人帮我过了这个难关!
第三个运算式a=-b+++c
其运算顺序为:a=-(b++)+c ,a=-b+c,b=b+1
如果此时b和c的值是第一个运算式所给出的值的话,那么b=6,c=4所运算出的结果不可以为-1
完全与现实脱离!!
而且这好像是跟编译器有关的!!
++b表示先在初值上加1再用
就是b先自增为6,c加完后自减为4,此时还是5.那a就是6+5=11,b为6,c为4.
a=b---c
就是b此时为5,输出时为4,a就是5-5=0,b为4,c为5.
a=-b+++c
-负和++为同一个优先级,b此时为5,计算后为6,a就是-5+5=0,b为6,c为5.
这是我们现在计算机课程的试题吗?这种脱离实际的题真是让人无语啊。谁要是在我带的项目里这样编码,我要骂死他,立马给我改成正常人能看懂的东西,不改就去卷铺盖。