Этот тип утверждений является логическим расширением того, как работают другие части языка. Подумайте о том, чтобы иметь функцию, которая возвращает значение, например int foo()
, что также имеет некоторые побочные эффекты. Иногда вы хотите, чтобы эти побочные эффекты имели место, поэтому вы пишете foo();
как утверждение.
Теперь, хотя это не выглядит точно так же, как 10;
, вызов функции рано или поздно оценивается как int, и с этим int ничего не происходит, как с 10;
.
Другим примером той же проблемы является то, что, поскольку вы можете сделать a = b = 10;
, это означает, что b = 10
должно вычислять до 10
, следовательно, вы не можете выполнять присваивание без генерации значения, которое должно подавляться. *
Возможность записывать такие значения как операторы - это просто логический способ построения языка, но для представленных вами случаев может быть даже неплохо предупредить его компилятором.
Если вы не используете его для подавления предупреждений компилятора;)