В C и C ++ присваивание является выражением. Например. a = 5
является выражением присваивания .
Как в C, так и в C ++ вы можете использовать любое выражение, за которым следует точка с запятой, где требуется оператор - например, тело функции. Этот тип оператора является выражением-оператором . (Технически, вы можете полностью исключить выражение. ;
- вырожденное выражение-выражение .)
Вы можете использовать декларацию только там, где она ожидается, а не везде, где вы можете использовать выражение.
Следующее не является выражением или выражением-выражением , это объявление . (Технически, в C ++ он может сформировать объявление-оператор при использовании там, где ожидается оператор, в С это просто объявление .) Обратите внимание, что нет выражение-присваивание подраздел этой декларации, = 3
является инициализатором для объявленной сущности num
.
int num = 3;
Эти два общих использования =
(инициализация и назначение) иногда путают. Если =
используется для инициализации объекта, объявленного в объявлении, это инициализация, где он используется для изменения значения уже объявленного объекта, это присваивание.
Вот где C и C ++ различаются: в C заключенная в скобки сущность, следующая сразу за ключевым словом while
, должна быть выражением , поэтому что-то вроде while (int num = 0) { /* ... */ }
недопустимо.
В C ++ сущностью может быть условие , которое допускает простое объявление с инициализатором, а также простое выражение , как в C. В C ++, где условие находится в форме объявления, объявленная сущность инициализируется на каждой итерации и неявно преобразуется в bool
, чтобы определить, выполнять ли тело цикла.
Цикл for
является специальным для обоих языков. На обоих языках первая часть списка в скобках после ключевого слова for
может быть либо объявление , либо выражение-выражение .