Mar*_*ork 6 language-design shortcut operators
大多数(但我实际上只知道一小部分,所以不要在这一点上挑剔)高级语言支持多个不同的赋值运算符.
a += 5; // increment a and assign result beack to a.
Run Code Online (Sandbox Code Playgroud)
但是没有(我已经看过(再次是一个小数字))似乎支持&& =运算符.
我问我最近看到的原因是:
// simplified.
bool x = false;
x = x && testA(); // perform test A/B/C/D stop on first failure.
x = x && testB();
x = x && testC();
x = x && testD();
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我们不能使用:
x &&= testA(); // perform test A/B/C/D stop on first failure.
x &&= testB();
x &&= testC();
x &&= testD();
Run Code Online (Sandbox Code Playgroud)
原因是C/C++不支持&& =,这让我们想到了原因.
是否存在逻辑(没有双关语)的原因,为什么语言支持具有赋值形式的所有其他主要运算符但不支持&& =或|| =
我对这些问题的论点有一个模糊的回忆,但当你的搜索字词是'&& ='时谷歌搜索和搜索搜索很难,结果我什么都没找到.
&&并且||是特殊的,因为在大多数语言中,它们是唯一提供短路评估的结构,因此当涉及缩写时,将它们与正常的非短路运算符区别对待是有道理的形式。避免&&=短路或不短路混乱的最简单方法是首先不包括它。