C++预处理器指令限制

发布于 2024-10-15 22:09:59 字数 207 浏览 4 评论 0原文

我有一个类似这样的 C++ 预处理器指令:

#if (SOME_NUMBER != 999999999999999)
// do stuff
#endif

999999999999999 显然大于 232,因此该值不适合 32 位整数。预处理器会正确使用 64 位整数来解析比较,还是会截断其中一个或两个值?

I have a C++ pre-processor directive that is something like this:

#if (SOME_NUMBER != 999999999999999)
// do stuff
#endif

999999999999999 is obviously greater than 232, so the value won't fit into a 32-bit integer. Will the preprocessor correctly use a 64-bit integer to resolve the comparison, or will it truncate one or both of the values?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疑心病 2024-10-22 22:09:59

尝试使用 LL 后缀:

#if (SOME_NUMBER != 999999999999999LL)
// do stuff
#endif

在我的 gcc 中,这工作正常:

#include <iostream>

#define SOME_NUMBER 999999999999999LL

int main()
{

#if (SOME_NUMBER != 999999999999999LL)
    std::cout << "yes\n";
#endif

    return 0;
}

带或不带 LL 后缀。

Try to use the LL suffix:

#if (SOME_NUMBER != 999999999999999LL)
// do stuff
#endif

In my gcc this work fine:

#include <iostream>

#define SOME_NUMBER 999999999999999LL

int main()
{

#if (SOME_NUMBER != 999999999999999LL)
    std::cout << "yes\n";
#endif

    return 0;
}

With or without the LL suffix.

回忆凄美了谁 2024-10-22 22:09:59

您可以尝试使用“limits.h”中定义的UINT_MAX常量:

#if (SOME_NUMBER != UINT_MAX)
// do stuff
#endif

UINT_MAX值根据整数大小而变化。

You can try using the UINT_MAX constant defined in "limits.h":

#if (SOME_NUMBER != UINT_MAX)
// do stuff
#endif

UINT_MAX value varies depending on the integer size.

爱已欠费 2024-10-22 22:09:59

预处理器算术与普通常量表达式一样工作(请参阅标准,16.1/4),除了 intunsigned int 被视为 long > 和unsigned long。因此,如果您有 64 位类型,则可以正常使用。

Preprocessor arithmetic works as normal constant expressions (see the Standard, 16.1/4), except that int and unsigned int are treated as if they were long and unsigned long. Therefore, if you have a 64-bit type, you can use it as normal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文