为什么我的程序中的一个枚举具有奇怪的价值131075?

why one of the enum's in my program has strange value 131075?

本文关键字:131075 枚举 一个 程序 我的 为什么      更新时间:2023-10-16

我确实调试了以下代码:

result = conn_process(conn, 1, 0);
if (result == CG_ERR_OK) continue;
if (result == CG_ERR_TIMEOUT)
{
    break;   // i'm here!
}

就像在调试器中一样,我在break;我假设result == CG_ERR_TIMEOUT是正确的。在当地人中,我确实看到:

    result  131075  unsigned int

在"监视"中,我确实看到:

    CG_ERR_TIMEOUT  error: identifier 'CG_ERR_TIMEOUT' out of scope 

转到定义向我展示了这样的代码:

enum {
CG_ERR_OK = 0,
CG_ERR_INTERNAL = CG_RANGE_BEGIN,
CG_ERR_INVALIDARGUMENT,
CG_ERR_UNSUPPORTED,
CG_ERR_TIMEOUT,
CG_ERR_MORE,
CG_ERR_INCORRECTSTATE,
CG_ERR_DUPLICATEID,
CG_ERR_BUFFERTOOSMALL,
CG_ERR_OVERFLOW,
CG_ERR_UNDERFLOW,
CG_RANGE_END
};

所以我只是想知道为什么CG_ERR_TIMEOUT==131075。多么奇怪的神奇数字?

因为CG_RANGE_BEGIN是131072(这是0x20000)。

enum {
    CG_ERR_OK = 0,
    CG_ERR_INTERNAL = CG_RANGE_BEGIN,   // == 131072

从现在开始,每个枚举值都是前一个加 1:

    CG_ERR_INVALIDARGUMENT,             // == 131072 + 1 = 131073
    CG_ERR_UNSUPPORTED,                 // == 131073 + 1 = 131074
    CG_ERR_TIMEOUT,                     // == 131074 + 1 = 131075
    CG_ERR_MORE,                        // etc.
    CG_ERR_INCORRECTSTATE,
    CG_ERR_DUPLICATEID,
    CG_ERR_BUFFERTOOSMALL,
    CG_ERR_OVERFLOW,
    CG_ERR_UNDERFLOW,
    CG_RANGE_END
};