В каких версиях C блок внутри скобки используется для возврата допустимого значения?

Если я сделаю:

int j = ({int x = 7; x+3;});

В i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (сборка Apple Inc., сборка 5646) gcc компилируется просто отлично. Блок в вопросе({int x = 7; x+3;}) возвращает значение последнего оператора в качестве значения блока. Если вы удалите скобки, он не скомпилируется. Могу ли я ожидать, что это будет работать в большинстве компиляторов Си?

Кроме того, как называется эта конструкция? У меня было много проблем с поиском, потому что поисковые системы не индексируют() или же{} и C - ужасный поисковый термин. Я также не смог найти ничего об этом ни в одной из моих книг, возможно, потому что я не знаю, что искать.

Ответы на вопрос(3)

Ваш ответ на вопрос