なぜこれを行うのですか?
#include <stdio.h>
#include <limits.h>
#include <inttypes.h>
int main() {
enum en_e {
en_e_foo,
en_e_bar = UINT64_MAX,
};
enum en_e e = en_e_foo;
printf("%zu\n", sizeof en_e_foo);
printf("%zu\n", sizeof en_e_bar);
printf("%zu\n", sizeof e);
}
4 8 8
Cおよび8 8 8
C ++(4バイトintのプラットフォーム上)で印刷しますか?
このUINT64_MAX
割り当てにより、すべての列挙定数が少なくとも64ビットに強制されますがen_e_foo
、プレーンCでは32のままであるという印象を受けました。
不一致の理由は何ですか?