gpt4 book ai didi

c++ - 代码不应该打印 "1 1"而不是 "4 4"吗?

转载 作者:IT老高 更新时间:2023-10-28 21:37:27 26 4
gpt4 key购买 nike

根据 §7.2/5 和 §7.2/6 不应该 code below打印 1 1 而不是 4 4?

#include <iostream>
enum A { a = (char)1, b, c }; // underlying type is not fixed

int main() {
std::cout << sizeof(a) << ' ' << sizeof(A) << '\n';
}

编辑

From §7.2/5:

If the underlying type is not fixed, the type of each enumerator is the type of its initializing value:

— If an initializer is specified for an enumerator, the initializing value has the same type as the expression and the constant-expression shall be an integral constant expression (5.19).

最佳答案

如果您没有明确定义基础类型,那么编译器可以自由选择适合值的整数类型。要在 C++11 中设置底层类型,您可以使用:

enum A : char { a = 1, b, c }; 
^^^^^^

如果int,您的方式不会强制编译器使用char

关于c++ - 代码不应该打印 "1 1"而不是 "4 4"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323510/

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