gpt4 book ai didi

c++ - 为什么这是有效的 C? --- ({123;}) 评估为 123

转载 作者:可可西里 更新时间:2023-11-01 18:16:34 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
in what versions of c is a block inside parenthesis used to return a value valid?

以下是典型 MAX 宏的类型安全版本(适用于 gcc 4.4.5):

#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })

在这里,我们看到这个表达式,max(a,b) 返回表达式的结果

_a > _b ? _a : _b;

即使这个表达式在一个 block 中。所以,我调查了一下,发现这是有效的 C:

int a = ({123;}); // a is 123

谁能解释为什么这是有效的语法以及 ({statements}) 的真实行为是什么?此外,您会注意到 {123;} 不是有效表达式,而只有 ({123;}) 是。

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