ANSI C中的parens表达式包含复合语句(块)吗?
浏览Linux内核源代码时,我发现了一段代码,其中括号括起来的语句块被视为表达式la lisp(或ML),即表达式,其值是最后一个语句的值。
例如:
int a = ({ int i; int t = 1; for (i = 2; i<5; i++) { t*=i; } t;});
我一直在研究ANSI C语法,试图弄清楚这段代码如何适合解析树,但我还没有成功。
那么,有没有人知道这种行为是由标准规定还是只是GCC的特殊性?
更新:我已尝试使用标志-pedantic,编译器现在给我一个警告:
warning: ISO C forbids braced-groups within expressions
茅侃侃
白衣染霜花
相关分类