Android JNI数据类型问题
mob 发布于 2023-10-05

在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

 

 

mob
关注 私信
文章
61
关注
0
粉丝
0