问题标签 [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.
c++ - 对逗号在 C/C++ 中的工作方式有些困惑
我已经使用 SO 一段时间作为参考,但之前从未问过问题。我目前正在上大学的 C++ 课程,并且还在阅读Bjarne Stroutstrup 的《编程:原则与实践》 ,只是为了我自己的利益,因为我在这里看到了一个真正推荐它的问题的答案。
我们目前正在课堂上讨论运算符,我似乎无法理解逗号运算符在语句中的工作方式。一个例子是课程在线部分的一个示例问题,即使我编写了一个 C 程序并使用 GDB 来获得结果,我也会一直出错。问题是:
假设在下面的表达式之前x==16,那么下面的表达式的值是多少(不一定是x的值)?
x++, ++x, x+=x
我对正确答案不感兴趣,而是对如何获得正确答案感兴趣。我已经阅读了类似问题的几个答案,例如这里的这个,但似乎我错过了当实际上没有赋值运算符时这是如何应用的。这和说的一样吗
或者
或者都不是?有人可以解释一下逗号运算符是如何工作的,特别是与没有赋值的语句有关吗?
c - 对整数变量 nc 的逗号分隔赋值
我无法理解这段代码的工作原理。
输出是7
。那是什么任务?
c - 当我们返回一个具有两个值的整数时,C 中的逗号运算符会做什么?
float
当我输入,
而不是时,我实际上是在返回一个值,.
但它没有给我任何错误。然后我尝试运行下面的代码。
现在输出为 3,即返回第二个值。这发生在两年前,从那时起一直在寻找正确的答案。
研究这个问题的答案,我知道它在评估后返回第二个值,但它对第一个值有什么作用?
我研究了堆栈的逻辑(如何在内部推送和弹出值),但我认为这与它没有任何关系。
它是处理这两个值还是做其他事情?
c - i = (i, ++i, 1) + 1 是什么?做?
在阅读了有关未定义行为和序列点的答案后,我编写了一个小程序:
输出是2
。天哪,我没有看到递减的到来!这里发生了什么?
此外,在编译上述代码时,我收到一条警告:
px.c:5:8: 警告:逗号表达式的左操作数无效
为什么?但可能我的第一个问题的答案会自动回答它。
c - ((a++,b)) 是如何工作的?
在上面的代码块中,我试图了解该行return reverse((i++, i))
是如何工作的。
我还发现了下面的一段代码,它的工作原理类似。
如果问题是非常基本的问题,我很抱歉。我觉得很难理解。如果有人可以解释,那将很有帮助。
c++ - 此语句如何工作 `int k = (a++, ++a);` 在 c 或 c++ 中
我无法理解以下代码的输出如何是“-3”?
int k = (a++, ++a);
在 c 或 c++ 中这个语句背后的概念是什么 ?
c++ - 有人可以为我得到的输出清除这个概念吗?
这是在采访中被问到的。以下代码段的输出是什么?
通过输出,我猜测它的 (1-3) = -2。但是如何从(3,2,1)
价值1
中选择,同样从(1,2,3)
价值3
中选择?我的猜测是否正确?
c - 是否写了 3 条用逗号分隔的指令 `,` 未定义的行为?
我认为我在某处看到用逗号分隔的多于 1 条指令,
是未定义的行为。
那么下面的代码会产生未定义的行为吗?
因为有 3 条指令用逗号分隔,
:
c - 预处理器指令中的逗号运算符
这是一个需要更深入理解的问题。
假设我有以下代码:
如果我是对的,则 if 应该始终为真,因为 1 和 2 是没有影响的表达式,只会检查 3。(这至少在普通的C /C++ 代码中应该是正确的)
但这是正确的,还是有任何理由让我也应该考虑 1 和 2?我在一些代码中看到了它,我不确定这是否有任何意义或影响。
c - C函数中逗号分隔的返回参数
在完成 C 编程测试时,我收到了一个关于函数的预期输出的问题,该函数似乎返回两个值。它的结构如下:
这个问题让我感到意外,并固有地认为如果可能,第一个参数将传递给调用者。
但是编译之后,结果却是66。快速搜索后,我找不到任何关于构造这样的返回语句的信息,所以想知道是否有人可以帮助我。
为什么它会这样,为什么?