我有一个C++预处理程序指令,如下所示:

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

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

最佳答案

尝试使用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后缀。

09-06 07:01