问题标签 [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 投票
1 回答
139 浏览

c - C:在宏中创建和返回变量

我有点困惑为什么这个 C 宏无法编译:

调用它时,我收到错误:

如果我typeof(lua_to##type)用 just替换也会发生同样的情况int,所以我怀疑问题与逗号有关。你不能在这样的表达式中间声明变量吗?

我知道 gcc 有一个从块返回值的扩展,但我想避免编译器扩展。我也意识到这应该改为内联函数,但现在我很好奇为什么宏不起作用。

0 投票
1 回答
163 浏览

c - 新手:编译时出现C语法错误

当我尝试编译时,第一行 [ for(int... ] 出现此错误:

为什么我需要添加另一个')'?

0 投票
3 回答
1459 浏览

c++ - C++条件运算符中逗号运算符的优先级是什么?

这里发生了什么事?

第二种情况似乎很好。在第一种情况下,我希望 x 和 y 都递增到 1,但只有左侧操作数递增。

0 投票
2 回答
421 浏览

c++ - 移动由逗号运算符抑制的构造函数

这个程序:

当由 gcc-4.7.1 编译时输出(链接):

为什么逗号运算符会有这种效果?标准说:

5.18 逗号运算符 [expr.comma]

1 - [...] 结果的类型和值是右操作数的类型和值;结果与其右操作数[...]具有相同的值类别。如果右操作数的值是临时的,则结果是临时的。

我是否错过了一些允许逗号运算符影响程序语义的东西,或者这是 gcc 中的错误?

0 投票
2 回答
10119 浏览

java - Java - for 循环声明外的逗号运算符

我知道我可以像这样使用逗号运算符

但是有些文章似乎建议可以在 for 循环声明之外使用逗号运算符,例如

来源:http ://www.cs.umd.edu/~clin/MoreJava/ControlFlow/comma.html

或者

来源:https ://stackoverflow.com/a/12047433/1084813

对于代码混淆竞赛或混淆我的同事来说,这将是一个巧妙的技巧,但两个示例都不会编译(Java 1.6,Eclipse Juno),错误是“赋值的左侧必须是变量”。我尝试查看编译器设置,看看是否可以禁止防止错误代码,但没有运气。

怎么了?逗号运算符是否是后来更改的旧规范的一部分?编写这些示例的人是否使用允许这样做的不同 Java 设置?

0 投票
2 回答
2631 浏览

c++ - 这里如何使用逗号运算符?

可能重复:
C++ 逗号运算符
C 逗号运算符的使用

我对 C++ 并不陌生,但这是我第一次看到以下代码:

那是C++代码。你能告诉我这里发生了什么吗?以及变量 b 如何获得值 3?

0 投票
2 回答
687 浏览

c++ - 为什么双 x = 0,1; 不编译?

不编译(在 MSVC9.0 上尝试)。错误是

确实意识到那里有一个逗号而不是一个点,但是上面的行不应该被解释为以下内容吗?

顺便说一句,初始化使用括号成功编译。

operator ,我在考虑优先级低于的线路operator =,但在这种情况下=不是运算符,所以这不应该是一个问题。什么句法规则决定了

应该是非法的吗?

0 投票
2 回答
210 浏览

c++ - 逗号运算符用法

可能重复:
是否可以在 for 循环中声明两个不同类型的变量?

考虑这段代码:

我很惊讶 MSVC 2010 给了我编译这个 for 循环的错误。MSVS 禁止使用逗号运算符吗?

这是一个错误:

如果我尝试将“int i”定义推出循环,我会得到:

0 投票
6 回答
649 浏览

c - C中的逗号和赋值运算符

我有以下内容:

输出是:

逗号运算符如何与赋值运算符一起使用?据我所知,如果我们有,它将评估并返回第二个表达式,

那么,它为什么要评估a = b呢?

0 投票
2 回答
1220 浏览

c++ - 逗号运算符是否必须是左结合的?

根据这个优先表逗号运算符是左结合的。也就是说,a, b, c被解析为(a, b), c. 这是必需品吗?不会a, (b, c)有完全相同的行为吗?