在C语言中,long数据类型是4个字节,要使用更大的整数,很多人可能会用long long 来定义整数类型的变量,但在Android JNI中,long是8个字节的,虽然定义long long编译运行不会报错,但运行结果却不是我们想要的,像下面的例子
int i=0;
long long len = 0;
__android_log_print(ANDROID_LOG_DEBUG, "len", "len :%ld",len);
while(i<10)
{
len=len+i*1000;
__android_log_print(ANDROID_LOG_DEBUG, "len", "len :%ld",len);
i++;
}
D/len: len :-390487596
D/len: len :1000
D/len: len :1000
如果len改为long则运行结果如下
D/len: len :0
D/len: len :0
D/len: len :1000
D/len: len :3000
D/len: len :6000
D/len: len :10000
D/len: len :15000
D/len: len :21000
D/len: len :28000
D/len: len :36000
D/len: len :45000