Если я это сделаю:
int j = ({int x = 7; x+3;});
В i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) gcc компилируется просто отлично. Этот блок ({int x = 7; x+3;})
возвращает значение последнего оператора как значение блока. Если вы удалите скобку, она не компилируется. Могу ли я ожидать, что это будет работать в большинстве компиляторов C?
Кроме того, какое имя для этой конструкции? У меня было много проблем в поиске, потому что поисковые системы не индексируют ()
или {}
, а C - ужасный поисковый запрос. Я также не смог найти ничего об этом в любой из моих книг, возможно, потому, что я не знаю, что искать.