这个符号在 C++ 中是啥意思? [复制]

Posted

技术标签:

【中文标题】这个符号在 C++ 中是啥意思? [复制]【英文标题】: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 语句比表达式清晰得多。更清晰的代码意味着更容易理解它和它的作用,也更容易维护。条件表达式经常被误用为过早的优化,认为编译器不会生成最佳代码。 【参考方案1】:

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

w = 1.0 / w;

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

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

【讨论】:

定时器到时我会接受这个。 谢谢。下次问这样的问题时,请考虑多花几分钟研究一下,这样可以避免这样的问题。毕竟他们没有给这个网站增加任何价值。

以上是关于这个符号在 C++ 中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

参考——这个符号在 PHP 中是啥意思?

参考——这个符号在 PHP 中是啥意思?

参考——这个符号在 PHP 中是啥意思?

&: 在红宝石中是啥意思,它是一个混合了符号的块吗? [复制]

这个符号在 PHP 中是啥意思 <?=

这个符号 `:>` 在 Coq 中是啥意思?