gpt4 book ai didi

c++ - 一元减号运算符如何在 C++ 中处理 bool 值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:41 26 4
gpt4 key购买 nike

我目前正在将一些 OpenCV 代码从 C++ 转换为 Java。我不能使用 JavaCV,因为我们需要在 native Java 中进行转换,而不是 JNA。在代码的某个位置,我得到了以下分配:

dst[x] = (uchar)(-(kHit >= kForeground));

其中dstuchar*kHitkForegroundint .

我一直无法找到有关其工作原理的任何信息,并且 Java 不会将其识别为操作。在代码的另一处对这两个变量进行了操作,它存储了两个值之一:255 或 0。

问题代码来自opencv/video/src/bgfg_gaussmix.cpp

最佳答案

在 C++ 中, bool 表达式产生两个值之一 - 01。当您将一元减号 - 应用于结果时,您将得到 0-1。当您将 -1 重新解释为 uchar 时,您会得到 255

您可以使用条件将此表达式转换为 Java:

dst[x] = (kHit >= kForeground) ? 255 : 0;

由于分支,它不会像原来的那样快。然而,您对它的速度几乎无能为力,因为 Java 缺乏将 bool 值重新解释为数字的能力。

关于c++ - 一元减号运算符如何在 C++ 中处理 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com