我看到java(以及许多其他语言,如C#和VB)提供逻辑“和”和“或”的短路和非短路版本运营商。 其中C / C ++没有提供非短路版本。
这些非短路版本何时需要?如果没有他们,为什么还要提供这些其他语言?
答案 0 :(得分:3)
例如,您可能会遇到以下两种方法计算条件的情况:
if (methodA() && methodB())
现在,如果你绝对要求在这一点上运行这两种方法(也许它们会做其他相关的事情,比如记下它们已被评估过),那么你就不应该短信:
if (methodA() & methodB())
这保证了相同的结果,但它也保证了两种方法都能运行。一般来说,它几乎从未在我看过的实践中使用,我可能会认为这甚至是不好的做法。
至于为什么这个功能在某些语言而不是其他语言中的问题 - 这对于语言设计者来说只是一个问题。充其量我们可以猜到他们的意图是什么。