我有一个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后缀。