vc6.0里的问题,请各位指教!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/07/08 02:04:02
一.
#include<stdio.h>
main()
{int i=5;
int q=(++i)+(++i)+(++i);
printf("i=%d,q=%d\n",i,q);
}
vc6.0输出结果:i=8,q=22;详解一下为什么?
二.
#include<stdio.h>
main()
{float i=5;
float q=(++i)+(++i)+(++i);
printf("i=%f,q=%f\n",i,q);
}
vc6.0输出结果是:i=8.000000,q=21.000000;
为什么q不是=22.000000?详解一下.
三.
#include<stdio.h>
main()
{float i=123.456;
printf("i=%f\n",i);
}
vc6.0输出结果是:123.456001;
为什么不是:123.456000?详解一下.
四.
二级C课本写道;
f为float型,值为123.456
输出语句为printf("%f\n",f);
输出结果为123.456
为什么结果不是123.456000?详解一下.
难道课本有错吗?但在课本出现几次哦.
请懂的能够一一详解.谢谢.
详解

楼主请注意:不要在一个语句里出现多次对同一个变量的自增、自减运算,因为不同的编译器对此有不同的理解。你用VC6.0写这个C程序,也许是这个结果。如果改用Borland的Turbo C 2.0 也许是另一个结果,这种语句根本没有意义!
第二题同理。
第三题,我用VC6.0也得到了楼主的结果,是不是编译器的问题啊,不太清楚。
第四题,我用Turbo C2.0测试过,除非在printf里指定小数的位数,否则小数点后一定有6位的,书那么写是错的。这点我可以保证!


1 ++i三次,每次把自己加1,最后就是5+3=8.
2 我的结果是31,如果这样:
int i = 5;
int a = ++i;
int b = ++i;
int c = ++i;
int q = a+b+c;
printf("q=%d\n",q);
这样的结果就是21了,具体啥原因我也不知道,我在琢磨琢磨.


我的结果是8和21 ,不知道你咋这么多0


我的结果是123.456 也没这么多地0


应该是把末位的0摸了,这是常识啊