欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[JNI]截断jboolean类型

程序员文章站 2024-02-26 22:45:40
...

jboolean是一个8位的unsigned类型,值范围为0~255.0对应JNI_FALSE,1~255对应JNI_TRUE.

对于32位或16位的变量a赋值给jboolean时,如果a的低8位为0会出现逻辑问题.

代码:

void print(jboolean condition)
{
    if (condition) {
        printf("true\n");
    } else {
        printf("false\n");
    }
}

//错误
int n = 256;
print (n);             //==>JNI_FALSE

对于32位变量n(256的低8位为0),本应该判断为JNI_TRUE,实际判断为JNI_FLASE.

改为如下后逻辑正确:

//正确
int n = 256;
print(n ? JNI_TRUE : JNI_FALSE);

 

参考资料:

[1]The Java™ Native Interface Programmer’s Guide and Specification.pdf

相关标签: Android系统开发