0

ビットごとのORですばやく簡単に区別できるように、ビットマスキングを使用してファイルタイプを列挙しようとしました。

typedef enum {

    FileTypeDirectory = 1,
    FileTypePIX = 2,
    FileTypeJPG = 4,
    FileTypePNG = 8,
    FileTypeGIF = 16,
    FileTypeHTML = 32,
    FileTypeXML = 64,
    FileTypeTXT = 128,
    FileTypePDF = 256,  
    FileTypePPTX = 512,

    FileTypeAll = 1023

} FileType;

私のOR操作は128まで機能しましたが、その後失敗しました。64ビットMacOSXの列挙型はバイトデータ型に制限されていますか?(2 ^ 7 = 128)

4

2 に答える 2

0

C のすべてのenum 定数intは型であり、列挙自体の型ではありません。したがって、制限はenum変数のストレージ サイズではなく、int.

Objective-C についてはあまり知りませんが (これもタグ付けされているため)、C から大きく逸脱するべきではありません。

于 2012-08-17T13:17:40.087 に答える
0

OR演算子をどのように使用したかはよくわかりませんが、あなたのtypedef.

FileType _fileType = FileTypeGIF | FileTypePDF | FileTypePPTX;
NSLog(@"filetype is : %d", _fileType);

結果は次のとおりです。

filetype is : 784

これは正しい値16 + 256 + 512です784


(実際のデバイスでのみテストされています。)

于 2012-08-17T13:36:57.347 に答える