本文主要是介绍截断jboolean类型问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
这篇关于截断jboolean类型问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!