【问题标题】:What does this notation mean in C++? [duplicate]这个符号在 C++ 中是什么意思? [复制]
【发布时间】:2019-06-26 00:19:24
【问题描述】:

我开始学习 C++ 中的 OpenCV。我对 OpenCV 的 python 版本有相当的工作知识,我想知道以下内容在 python 中会翻译成什么?我试图理解 cv2.warpPerspective() 函数的数学运算。我那小小的蟒蛇大脑无法将它的头包裹起来。

w = w != 0.0f ? 1.f / w : 0.0f

到目前为止,我从中得到的只是如果“w”不等于“0”,那么它将等于“1/w”,否则“w”将等于“0”

对吗?

【问题讨论】:

  • ?: 是一个三元条件运算符,意思是如果 cond (w != 0) 则返回第二个。参数。 (1.f / w) 否则第三。参数 (0.0f)。请在谷歌上搜索 C++ 条件运算符以查找更多信息。我相信 Python 会是1.0 / w if w != 0.0 else 0.0
  • 如果 'w' 不等于 '0' 那么它将等于 '1/w' 否则 'w' 将等于 '0' — 好吧,看来你已经有了你的答案。您的实际问题是什么?
  • 相当于if (w != 0.0f) { w = 1.f / w; } else { w = 0.0f; }
  • 感谢您的回复,我查看了 docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… 和其他来源,但我不确定如何将所有部分组合到这一行中。
  • @StackDanny 更不用说if 语句比表达式清晰得多。更清晰的代码意味着更容易理解它和它的作用,也更容易维护。条件表达式经常被误用为过早的优化,认为编译器不会生成最佳代码。

标签: c++


【解决方案1】:

是的,这是正确的。如果他们只是写

w = 1.0 / w;

可能会发生除以零。所以在这里添加ternary operator 是一种很好的处理方式。更直观的选择是:

if (w != 0.0f){
   w = 1.0f / w;
}

【讨论】:

  • 定时器到时我会接受这个。
  • 谢谢。下次问这样的问题时,请考虑多花几分钟研究一下,这样可以避免这样的问题。毕竟他们没有给这个网站增加任何价值。
猜你喜欢
  • 2014-08-13
  • 2012-11-03
  • 2016-10-10
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多