zer*_*s00 3 c++ msdn constant-expression
必须将非整数常量(显式或隐式)转换为整数类型,使其在常量表达式中是合法的.因此,以下代码是合法的:
Run Code Online (Sandbox Code Playgroud)const double Size = 11.0; char chArray[(int)Size];
至少在VC++ 10.0上,第二行产生:"错误C2057:预期的常量表达式".那么它在某些其他编译器上是合法的还是msdn页面完全错了?
根据5.19/1:
一个积分常数表达式可以只涉及文字(2.13),统计员,
const变量或静态数据成员积分或枚举类型的使用常量表达式(8.5),积分或枚举类型的非类型模板参数,并初始化sizeof表达式.浮动文字(2.13.3)只有在转换为整数或枚举类型时才会出现.
根据我的理解,代码无效,而以下是合法的:
char chArray[(int)11.0];
Run Code Online (Sandbox Code Playgroud)