这个符号在 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++ 中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章