在C++中,对枚举类型的哪些操作是合法的

What operations on enumeration types are legal in C++?

本文关键字:操作 类型 C++ 枚举      更新时间:2023-10-16

这个问题让我抓狂。我需要把它做好,这样我才能通过我的课。感谢所有的尝试。

用C++编写一个简单的程序来研究其枚举类型的安全性。对枚举类型至少包括10种不同的操作,以确定哪些不正确或愚蠢的事情是合法的。

这里有一个完全可操作的程序,它显示了使用枚举的十种不同类型的操作。详细信息将在代码中,参考资料将在帖子底部。

首先,了解什么是枚举是非常重要的。有关这方面的参考,请参阅Enumerated Types-enums。在下面的代码中,我使用数学运算、逐位运算符和枚举值将数组初始化为默认大小。

#include <iostream>
using namespace std;
enum EnumBits
{
    ONE = 1,
    TWO = 2,
    FOUR = 4,
    EIGHT = 8
};
enum Randoms
{
    BIG_COUNT = 20,
    INTCOUNT = 3
};
int main(void)
{
    // Basic Mathimatical operations
    cout << (ONE + TWO) << endl;    // Value will be 3.
    cout << (FOUR - TWO) << endl;   // Value will be 2.
    cout << (TWO * EIGHT) << endl;  // Value will be 16.
    cout << (EIGHT / TWO) << endl;  // Value will be 4.
    // Some bitwise operations
    cout << (ONE | TWO) << endl;    // Value will be 3.
    cout << (TWO & FOUR) << endl;   // Value will be 0.
    cout << (TWO ^ EIGHT) << endl;  // Value will be 10.
    cout << (EIGHT << 1) << endl;   // Value will be 16.
    cout << (EIGHT >> 1) << endl;   // Value will be 4.
    // Initialize an array based upon an enum value
    int intArray[INTCOUNT];
    // Have a value initialized be initialized to a static value plus
    // a value to be determined by an enum value.
    int someVal = 5 + BIG_COUNT;
    return 0;
}

上面完成的代码示例可以用另一种方式完成,即重载EnumBits的运算符|等。这是一种常用的技术,有关其他参考,请参阅如何在C++中使用枚举作为标志?。

关于比特操作的参考,请参阅C和C++中的比特运算符:教程

使用C++11,您可以以其他方式使用枚举,例如强类型枚举。