我在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位整数?有没有解决方法?
答案 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();
}