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

时间:2012-04-07 02:58:03

标签: c++ types operators enumeration

这个问题让我抓狂。我需要做对,所以我可以通过我的课程。感谢所有尝试的人。

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

1 个答案:

答案 0 :(得分:-1)

这是一个完全可操作的程序,它使用枚举显示十种不同类型的操作。详细信息将在代码中,引用将位于帖子的底部。

首先,了解枚举是非常重要的。有关此参考,请查看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重载operator等的地方。这是一种常用技术,有关其他参考资料,请参阅How to use enums as flags in C++?

有关按位运算的参考,请查看Bitwise Operators in C and C++: A Tutorial

使用C ++ 11,您可以通过其他方式使用枚举,例如strongly typed enums