类型将变量从jBoolean强制转换为bool

问题描述

| 当使用JNI在Java和C之间进行接口时,javah会将Java中的布尔值解析为JNI头文件中的
jBoolean
。当我在C文件中使用ѭ1时,Visual Studio编译器会引发警告   警告C4800:\'jboolean \':强制将值设置为bool \'true \'或\'false \'(性能警告) 还有其他应使用的数据类型吗?或者,如果
bool
是这里唯一的数据类型,那么我可能会遇到什么性能问题?     

解决方法

        “性能问题”是演员表并非完全免费。强制转换为
bool
本质上意味着将所有非零值强制为
1
,这需要一点代码,而不是像“ free \”强制转换那样将
char
扩展到
int
。 “性能问题”是一些额外的机器说明。如果您要在一圈紧紧地做一百万遍,那么好吧,也许您在乎-否则,您根本不需要在乎。这是IMO愚蠢的编译器警告;小小的增加的成本只是使用ѭ1时所做的折衷的一部分,编译器不应为此而烦恼。     ,        尝试强制转换为BOOL。您可能还会发现此线程很有趣:bool和BOOL之间的区别。 我不太确定这是您要寻找的东西。 BOOL是16位,而不是8位。如果可以,那么它比bool更接近您要查找的内容。否则,您可以使用字节。请注意,如果最终还是强制转换为其中任何一个,则将无法再执行== true。我在提供的链接中也对此进行了说明。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...