Здравствуйте, dmikh, Вы писали:
D>Здравствуйте, George__20, Вы писали:
G__>>Kto mojet pomoch raziasnite etot cod. Neponiatni tolko eti skobki
ZARANE SPOSIBO
G__>>typedef struct {
G__>> int a;
G__>>} st;
G__>>st f()
G__>>{
G__>> int a;
G__>> return (st) {({a;})}; // ???
G__>>}
D>D>(st) {...}
D>
D> это compound literal из C99 стандарта. Фактически компилятор здесь делает неименнованную переменную типа st и инициализирует ее тем что в скобках.
D>D>({ ...; })
D>
D> это уже расширение из GNU C. GNU C которое позволяет из блока кода сделать выражение значение и тип которого определяется последним statement в блоке.
D>В данном примере
D>D>return (st) {({a;})};
D>
D> эквивалентно просто
D>D>return a;
D>
D> ну и такие навороты особого смысла не имеют, если только это не вопрос на интервью.
Sposibo bolshoe! eto ne vopros na intervu tam v primere bili statement-i no ia uprastil.