小天管理 发表于 2024年6月27日 发表于 2024年6月27日 long 在 32 位编译器里,是 32 位整型。在 64 位编译器里,是 64 位整型。为了避免代码歧义,我一般会用 long long 来表示 64 位整型,这样不管 32 位还是 64 位编译,都能保持一致性。但是,官方有一个 INT64_C 的宏,是下面这样定义的。也就是官方推荐 64 位编译器,优先选用 long 为 64 位整型。#if defined(__LP64__)#define INT64_C(c) c ## L#else#define INT64_C(c) c ## LL#endif这就很尴尬了,我代码里全部都是 long long ,和 long 并不兼容,属于两个不同类型,陷入了深深的沉思。最后决定,我不用官方的 INT64_C 宏了,属于把人带偏的节奏。
已推荐帖子