2

Python と ctypes モジュールで C プログラム (動的ライブラリ経由) を使用しようとしています。ヘッダー ファイルで定義されたいくつかの定数は私にとって重要ですが、enumそれらの値を設定するために がどのように使用されているかはわかりません。

明らかなもの、私は次のように理解していると思います: enum{THING1, THING2, THING3};

THING1=0, THING2=1, THING3=3

しかし、これはどうですか? enum{THING1=-1, THING2, THING3};

結果は次のとおり THING1=-1, THING2=1, THING3=2です。

これはどうですか? enum{THING1=1, THING2, THING3, THING4=-1}?

これをテストする簡単な方法がないので、誰かがenumこのコンテキストでどのように機能するかを説明できることを願っています. 私が調べたCの本は、最初のケースまたは各値が明示的に定義されているケースのいずれかをカバーしているように見えましたが、この混合ケースはカバーしていませんでした。

よろしくお願いします!

4

2 に答える 2

5

enum特に指定がない限り、最初の定数の値は 0 です。

他のenum定数の値は、明示的に指定されていない限り、前の値よりも 1 大きくなります。

そう

enum{THING1=-1, THING2, THING3};

セットTHING2 = 0, THING3 = 1、および

enum{THING1=1, THING2, THING3, THING4=-1}

セットしますTHING2 = 2, THING3 = 3THING4 = -1明示的に指定されます)。

于 2013-04-19T21:38:13.793 に答える
3

前の値からインクリメントされるだけです。あなたの例では、

enum{THING1=-1, THING2, THING3};

と同等です

enum{THING1=-1, THING2=0, THING3=1};

そして、これ

enum{THING1=1, THING2, THING3, THING4=-1}?

と同等です

enum{THING1=1, THING2=2, THING3=3, THING4=-1}
于 2013-04-19T21:39:07.997 に答える