gpt4 book ai didi

c - 在什么版本的 C 中,括号内的 block 用于返回有效值?

转载 作者:太空狗 更新时间:2023-10-29 16:29:11 25 4
gpt4 key购买 nike

如果我这样做:

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

在 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) gcc 中它编译得很好。有问题的 block ({int x = 7; x+3;}) 返回最后一条语句的值作为 block 的值。如果你删除括号它不会编译。我可以期望这适用于大多数 C 编译器吗?

此外,这个结构的名称是什么?我在搜索它时遇到了很多麻烦,因为搜索引擎不会为 (){} 编制索引,而且 C 是一个糟糕的搜索词。我也无法在我的任何书中找到任何关于它的信息,可能是因为我不知道要查找什么。

最佳答案

这是一个GCC extension :

A compound statement enclosed in parentheses may appear as an expression in GNU C. This allows you to use loops, switches, and local variables within an expression.

Recall that a compound statement is a sequence of statements surrounded by braces; in this construct, parentheses go around the braces. For example:

 ({ int y = foo (); int z;
if (y > 0) z = y;
else z = - y;
z; })

is a valid (though slightly more complex than necessary) expression for the absolute value of foo ().

The last thing in the compound statement should be an expression followed by a semicolon; the value of this subexpression serves as the value of the entire construct. (If you use some other kind of statement last within the braces, the construct has type void, and thus effectively no value.)...

关于c - 在什么版本的 C 中,括号内的 block 用于返回有效值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com