关于const引用的问题
编译运行环境:VC++ 2008 Express
问题来源:C++ Primer中文版P52 OR 英文版Chapter2 Section2.5
是这样的
代码:
double dval=3.14;
const int &ri=dval;
书上解释为:
等价于
int temp=dval;
const int &ri=temp;
这个不错,我验证过;但问题是:
如果我把const int &ri=dval;放在main函数以外会有如下运行错误:
CXX0030:Error:expression cannot be evaluated
而放在main()函数内部则运行不会出错。
注:不管外部内部,编译都通过,并且warning C4244: 'initializing' : conversion from 'float' to 'const int', possible loss of data
信息够详细了吧,求高手给讲解一下这是为什么?
[解决办法]
注:不管外部内部,编译都通过,并且warning C4244: 'initializing' : conversion from 'float' to 'const int', possible loss of data
类型不对一个是float一个是int
[解决办法]
vc6.0下在main内外都运行通过
warning 是因为将double赋值给int而致(int temp=dval; dval是double类型)
[解决办法]
用devcpp也都过了。并且运行没有报错。
[解决办法]
不安全类型转换
[解决办法]
用DEV-CPP看看
[解决办法]
不报错的那个编译器有问题,引用必须类型匹配,类型不匹配是有问题的