问题标签 [comma-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
219 浏览

c++ - 对逗号在 C/C++ 中的工作方式有些困惑

我已经使用 SO 一段时间作为参考,但之前从未问过问题。我目前正在上大学的 C++ 课程,并且还在阅读Bjarne Stroutstrup 的《编程:原则与实践》 ,只是为了我自己的利益,因为我在这里看到了一个真正推荐它的问题的答案。

我们目前正在课堂上讨论运算符,我似乎无法理解逗号运算符在语句中的工作方式。一个例子是课程在线部分的一个示例问题,即使我编写了一个 C 程序并使用 GDB 来获得结果,我也会一直出错。问题是:

假设在下面的表达式之前x==16,那么下面的表达式的值是多少(不一定是x的值)?

x++, ++x, x+=x

我对正确答案不感兴趣,而是对如何获得正确答案感兴趣。我已经阅读了类似问题的几个答案,例如这里的这个,但似乎我错过了当实际上没有赋值运算符时这是如何应用的。这和说的一样吗

或者

或者都不是?有人可以解释一下逗号运算符是如何工作的,特别是与没有赋值的语句有关吗?

0 投票
3 回答
80 浏览

c - 对整数变量 nc 的逗号分隔赋值

我无法理解这段代码的工作原理。

输出是7。那是什么任务?

0 投票
2 回答
93 浏览

c - 当我们返回一个具有两个值的整数时,C 中的逗号运算符会做什么?

float当我输入,而不是时,我实际上是在返回一个值,.但它没有给我任何错误。然后我尝试运行下面的代码。

现在输出为 3,即返回第二个值。这发生在两年前,从那时起一直在寻找正确的答案。

研究这个问题的答案,我知道它在评估后返回第二个值,但它对第一个值有什么作用?

我研究了堆栈的逻辑(如何在内部推送和弹出值),但我认为这与它没有任何关系。

它是处理这两个值还是做其他事情?

0 投票
7 回答
17572 浏览

c - i = (i, ++i, 1) + 1 是什么?做?

在阅读了有关未定义行为和序列点的答案后,我编写了一个小程序:

输出是2。天哪,我没有看到递减的到来!这里发生了什么?

此外,在编译上述代码时,我收到一条警告:

px.c:5:8: 警告:逗号表达式的左操作数无效

为什么?但可能我的第一个问题的答案会自动回答它。

0 投票
1 回答
278 浏览

c - ((a++,b)) 是如何工作的?

在上面的代码块中,我试图了解该行return reverse((i++, i))是如何工作的。

我还发现了下面的一段代码,它的工作原理类似。

如果问题是非常基本的问题,我很抱歉。我觉得很难理解。如果有人可以解释,那将很有帮助。

0 投票
4 回答
3663 浏览

c++ - 此语句如何工作 `int k = (a++, ++a);` 在 c 或 c++ 中

我无法理解以下代码的输出如何是“-3”?

int k = (a++, ++a);在 c 或 c++ 中这个语句背后的概念是什么 ?

0 投票
4 回答
130 浏览

c++ - 有人可以为我得到的输出清除这个概念吗?

这是在采访中被问到的。以下代码段的输出是什么?

通过输出,我猜测它的 (1-3) = -2。但是如何从(3,2,1)价值1中选择,同样从(1,2,3)价值3中选择?我的猜测是否正确?

0 投票
2 回答
160 浏览

c - 是否写了 3 条用逗号分隔的指令 `,` 未定义的行为?

我认为我在某处看到用逗号分隔的多于 1 条指令,是未定义的行为。

那么下面的代码会产生未定义的行为吗?

因为有 3 条指令用逗号分隔,

0 投票
5 回答
417 浏览

c - 预处理器指令中的逗号运算符

这是一个需要更深入理解的问题。

假设我有以下代码:

如果我是对的,则 if 应该始终为真,因为 1 和 2 是没有影响的表达式,只会检查 3。(这至少在普通的C /C++ 代码中应该是正确的)

但这是正确的,还是有任何理由让我也应该考虑 1 和 2?我在一些代码中看到了它,我不确定这是否有任何意义或影响。

0 投票
4 回答
2121 浏览

c - C函数中逗号分隔的返回参数

在完成 C 编程测试时,我收到了一个关于函数的预期输出的问题,该函数似乎返回两个值。它的结构如下:

这个问题让我感到意外,并固有地认为如果可能,第一个参数将传递给调用者。

但是编译之后,结果却是66。快速搜索后,我找不到任何关于构造这样的返回语句的信息,所以想知道是否有人可以帮助我。

为什么它会这样,为什么?