gpt4 book ai didi

c++ - C++11 中的逗号运算符(排序)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:26 24 4
gpt4 key购买 nike

标准提到 f(a,(t=3,t+2),c); 根据我的理解,这将是一个赋值表达式,后跟第二个运算符的表达式。

但语法列出它并列:

表达式:

赋值表达式

表达式,赋值表达式

Working Draft, Standard for ProgrammingLanguage C++ Revision N4140 (November 2014)

有人好心向我解释一下我在这里缺少什么吗?

最佳答案

当你看到

 expression:
assignment-expression
expression, assignment-expression

表示有2种可能的表达方式。一种可能性是它只是 assignment-expression 在之前某处定义的。或者递归表示为expression, assignment-expression

因此在扩展它之后,您会收到该表达式是一个或多个赋值表达式标记的逗号分隔列表。

在您提到的示例中,第二个参数是表达式 (t=3,t+2),它由 2 个以逗号分隔的赋值表达式组成 - 因为它出现在“在逗号被赋予特殊含义的上下文中”,所以它必须“只出现在括号中”。

要找出为什么赋值表达式可以采用 t+2 的形式,您必须返回它的定义并始终选择第一个选项

assignment-expression
-> conditional-expression
--> logical-or-expression
---> logical-and-expression
----> inclusive-or-expression
-----> exclusive-or-expression
------> and-expression
-------> equality-expression
--------> relational-expression
---------> shift-expression
----------> additive-expression - this is what you see

关于c++ - C++11 中的逗号运算符(排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46341225/

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