gpt4 book ai didi

c++ - MSVC 常量枚举类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:24 24 4
gpt4 key购买 nike

const enum Alpha{
X=9,
Y=5,
Z=2
}p;
int main(){
enum Alpha a,b;
a= X;
b= Z;

p = X;
p = Y;

printf("%d",a+b-p);
return 0;
}

为什么在 MSVC 编译器中允许 p = X 和 p = Y?此代码输出 6。难道不应该在初始化时分配一个 const 值并且永远不会再分配吗?

最佳答案

那是编译器本身的错误。故事结束。

事实上,您的小代码显示了编译器中的两个错误。第一个错误本身就在这里:

const enum Alpha{
X=9,
Y=5,
Z=2
}p; //declaration of p is ill-formed!

p 的声明格式不正确,因此编译器应该拒绝此代码,因为 p 被声明为 const 但保留 < em>未初始化。必须初始化 const 标量(和 pod)类型才能合式:

const Alpha q;      //ill-formed (same case is with p in your code)
const Alpha r = X; //well-formed

有关详细和广泛的解释,请参阅:

关于c++ - MSVC 常量枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com