它说在C++ 常量表达式的 msdn 页面 http://msdn.microsoft.com/en-us/library/3ffb821x.aspx that:
非整数常量必须是
转换(显式或
隐式地)转换为整数类型
常量表达式中合法。
因此,下面的代码是
合法的:
const double Size = 11.0;
char chArray[(int)Size];
至少在 VC++ 10.0 上,第二行会生成:“错误 C2057:预期的常量表达式”。那么它在其他编译器上是合法的还是msdn页面根本就是错误的?
根据 5.19/1 :
An 积分常量表达式能
仅涉及文字(2.13),
枚举器,const
变量或者
静态数据成员的积分或
枚举类型初始化为
常量表达式 (8.5),非类型
积分或的模板参数
枚举类型,以及sizeof
表达式。浮动文字
(2.13.3) 仅当它们是时才会出现
转换为整数或枚举
类型.
据我了解,该代码无效,而以下代码是合法的:
char chArray[(int)11.0];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)