Поддержка современных языков + =, но не && =

Большинство языков высокого уровня (но я знаю лишь небольшое число, так что давайте не будем привередничать) поддерживают несколько различных операторов присваивания.

a += 5;  // increment a and assign result beack to a.

Но ни один из них (на которые я смотрел (опять же небольшое число)), похоже, не поддерживает оператор && =.
Причина, по которой я спрашиваю, я недавно видел это:

// 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();

И мне было интересно, почему мы не можем использовать:

x &&= testA(); // perform test A/B/C/D stop on first failure.
x &&= testB();
x &&= testC();
x &&= testD();

Причина в том, что && = не поддерживается в C / C ++, что заставило нас подумать Почему.

Есть ли логическая (без каламбура) причина, по которой язык поддерживает все другие основные операторы с формой присваивания, но не && = или || =

Я смутно припоминаю аргумент против них, но Поиск в Google и SO затруднен, если ваш поисковый запрос - '&& =', и в результате я ничего не нашел.

6
задан Martin York 19 October 2011 в 21:04
поделиться