Разница между составным оператором и блоком в C ++? - PullRequest
0 голосов
/ 01 февраля 2020

Я часто слышу о термине «составные операторы», который почти взаимозаменяемо используется для блока, начиная и заканчивая фигурными скобками {}. Я не вижу различий с блоком.

Итак, мой вопрос:

  • Есть ли разница между «блоком» и «составным оператором»?

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Чтобы привести действительный стандарт C ++, ISO / IEC 14882: 2017 (C ++ 17), раздел 9.3 «Составной оператор или блок» :

9.3 Составной оператор или блок [stmt.block]

1 Чтобы можно было использовать несколько операторов там, где ожидается один, составной оператор (также эквивалентно называемый «блоком») предоставляется.

составной оператор: {оператор-seqopt}

существует нет различий между терминами блока и составного оператора в их соответствующее значение.

Вы можете использовать оба термина взаимозаменяемо для «составного» или последовательности утверждений (это может быть даже одно утверждение; количество утверждений не имеет значения), начиная с «{» - открытого вьющегося скобка и оканчивается на "}" - закрытая фигурная скобка.

0 голосов
/ 01 февраля 2020

«Блок» кода, ограниченный { } для обозначения точек входа-выхода, ограничивает время жизни любых переменных, определенных внутри блока, этим блоком, тогда как «составной оператор» может и не использовать, если не используется { } внутри него. Определение функции может быть истолковано как «именованный блок» кода с точками входа и выхода.

...