msdn 页面“C++”处的拼写错误常量表达式”?

发布于 2024-10-08 22:10:42 字数 370 浏览 4 评论 0原文

它在 c++ 常量表达式的 msdn 页面 中说:

非整数常数必须是 转换(显式或 隐式地)转换为整数类型 常量表达式中合法。 因此,下面的代码是 合法:

const double Size = 11.0;
char chArray[(int)大小];

至少在 VC++ 10.0 上,第二行生成:“错误 C2057:预期的常量表达式”。那么它在其他编译器上是合法的还是msdn页面根本就是错误的?

It says at msdn page for c++ constant expressions that:

Nonintegral constants must be
converted (either explicitly or
implicitly) to integral types to be
legal in a constant expression.
Therefore, the following code is
legal:

const double Size = 11.0;
char chArray[(int)Size];

At least on VC++ 10.0 the second line produces: "error C2057: expected constant expression". So is it legal on some other compiler or is the msdn page simply wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗恋未遂 2024-10-15 22:10:42

根据 5.19/1 :

积分常量表达式可以
仅涉及文字(2.13),
枚举数、const 变量
积分或的静态数据成员
枚举类型初始化为
常量表达式 (8.5),非类型
积分或的模板参数
枚举类型和 sizeof
表达式。 浮动文字
(2.13.3) 仅当它们是时才会出现
转换为整数或枚举
类型

据我了解,该代码无效,而以下代码是合法的:

char chArray[(int)11.0];

According to 5.19/1 :

An integral constant-expression can
involve only literals (2.13),
enumerators, const variables or
static data members of integral or
enumeration types
initialized with
constant expressions (8.5), non-type
template parameters of integral or
enumeration types, and sizeof
expressions. Floating literals
(2.13.3) can appear only if they are
cast to integral or enumeration
types
.

From my understanding the code is invalid, while the following is legal :

char chArray[(int)11.0];
揪着可爱 2024-10-15 22:10:42

根据标准 C++,这是不合法的。规范中的规则请参见 5.19/2。

That's not legal according to Standard C++. See 5.19/2 for the rules in the spec.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文