-1

この質問は私を夢中にさせています。クラスに合格できるように、それを正しくする必要があります。試してくださった皆様、ありがとうございます。

列挙型の安全性を調べる簡単なプログラムを C++ で作成します。列挙型に少なくとも 10 の異なる操作を含めて、何が正しくないか、単にばかげているかを判断します。

4

1 に答える 1

-1

これは、列挙型を使用した 10 種類の操作を示す、完全に機能するプログラムです。詳細はコードに記載され、参照は投稿の下部にあります。

まず、列挙型とは何かを理解することが非常に重要です。これに関するリファレンスについては、列挙型 - 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| などをオーバーロードする別の方法で実行できます。これは一般的に使用される手法です。追加の参照については、C++ で列挙型をフラグとして使用する方法を参照してください。.

ビット演算のリファレンスについては、C および C++ のビット演算演算子: チュートリアルを参照してください。

C++ 11 を使用すると、厳密に型指定された列挙型など、追加の方法で列挙型を使用できます。

于 2012-04-07T03:24:51.190 に答える