在比较的情况下产生64位整数奇怪的结果

时间:2012-07-31 09:51:16

标签: c++ aix

我在64位AIX上使用__int64数据类型,在与0比较的情况下,我得到了奇怪的结果。

代码段:

__int64 indexExistingPart =  GetValue(); // GetValue always returns -1.

if (indexExistingPart < 0 )
{
    DoSomething(); //control never comes to this part of the code
}

我还尝试将0分配给另一个__int64变量并用于比较。但是,这也行不通:

__int64 indexExistingPart =  GetValue(); // GetValue always returns -1.

__int64 temp =0;

if (indexExistingPart < temp )
{
    DoSomething(); //control never comes to this part of the code
}

为什么比较运算符不能用于64位整数?有没有解决方法?

1 个答案:

答案 0 :(得分:0)

症状与__int64一致,是项目中unsigned long的typedef。 (__int64不是AIX提供的类型,至少根据IBM文档。)试试这个:

#include <stdint.h> // or #include <sys/types.h>, or #include <inttypes.h>

int64_t indexExistingPart = GetValue();  // or "signed long indexExistingPart ..."

if (indexExistingPart < 0 )
{
    DoSomething();
}