返回信息流代码如下,运行环境VC6.0:
#include <iostream>
using namespace std;
void main()
{
float a=1.37e6;
const long int b=1e6;
cout<<(a>b?1:0)<<endl;
return;
}
输出结果:0
-----------------------------------------------
为什么呢?试过把const去掉,则正常显示1;
这是一条镜像帖。来源:北邮人论坛 / cpp / #32016同步于 2009/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】一个关于const的问题
MagicCookie
2009/11/24镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 jokerlee 的大作中提到: 】
: gcc 输出结果为1
额。。难道又是imba的VC6.0????可惜没办法换。。是项目开发指定的编译器。。
我估计应该是这样:
在vc里面,a和b比较大小时,a,b类型不同,于是进行类型转换,在b去const前,b是常型,故不能转换,于是只能转换a,把a的小数部分切掉后正好与b相等,于是输出0
去掉const后,b优先转换类型,于是a > b成立,输出1
【 在 MagicCookie 的大作中提到: 】
: 代码如下,运行环境VC6.0:
: #include <iostream>
: using namespace std;
: ...................
【 在 lovesai 的大作中提到: 】
: 我估计应该是这样:
: 在vc里面,a和b比较大小时,a,b类型不同,于是进行类型转换,在b去const前,b是常型,故不能转换,于是只能转换a,把a的小数部分切掉后正好与b相等,于是输出0
: 去掉const后,b优先转换类型,于是a > b成立,输出1
恩,用VS2008试验后,也是1.
另外,你的猜测不对,因为我把程序改了,改成a>=b,依然输出0....
vc6
输出1
【 在 MagicCookie (IT民工) 的大作中提到: 】
: 代码如下,运行环境VC6.0:
: #include <iostream>
: using namespace std;
: ...................
【 在 MagicCookie 的大作中提到: 】
: 代码如下,运行环境VC6.0:
: #include <iostream>
: using namespace std;
: ...................
用什么编译器?