【问题标题】:What does the comma operator mean? [duplicate]逗号运算符是什么意思? [复制]
【发布时间】:2017-11-01 10:35:19
【问题描述】:

我之前已经声明了变量及其值,但我以前从未在一行中这样做过。

如果我写

A, B = 0.0, 2;

这是否意味着

A = 0 

B = 2? 

【问题讨论】:

  • 你试过了吗?
  • 在 Python 中会,但在 C 中不会。
  • 这不是 C 中的变量声明。

标签: c variable-assignment


【解决方案1】:

这个表达式

A, B = 0.0, 2;

是带有逗号运算符的表达式(这里有两个逗号运算符)。可以这样呈现

( A ), ( B = 0.0 ), ( 2 );

结果变量B 将获得值0.0。变量A 将保持不变。

来自 C 标准(6.5.17 逗号运算符)

2 逗号运算符的左操作数被评估为 void 表达;在它的评估和那个之间有一个序列点 的右操作数。然后对右操作数求值;结果 有它的类型和价值

所以上面表达式的值为2,类型为int。不使用表达式的值。所以它唯一的副作用是将值 0.0 分配给变量 B

【讨论】:

  • B 不是 2 吗?我相信由逗号运算符分隔的序列的结果是评估的 last 元素。因此,分配的值将是 2。这也是你的报价所说的:“结果有它的类型和值”。
  • @PaulOgilvie 如果 , 运算符的优先级高于 =
  • @PaulOgilvie 赋值运算符的优先级高于逗号运算符。
  • 谢谢。学习永远不会太老。
  • @PaulOgilvie 我同意你的看法。:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2015-11-16
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多