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

javascript - 逗号运算符作为回报

我正在从一页阅读 JS,这就是我发现的(源代码已被 google chrome 开发工具反混淆):

第一个逗号运算符操作数(那个a.replace())有什么技巧吗?

从我的角度来看,这a.replace(/[^\w\s\.\|``]/g,部分是完全多余的,可以删除。

我错过了什么吗?

0 投票
4 回答
2445 浏览

javascript - 在 javascript 三元运算符中正确使用逗号

我没有使用 if else 语句,而是尝试使用三元运算符,但在我的语句中某处出现语法错误。

有人可以告诉我哪里出错了吗?

声明是:

  • my_alert 是一个有 2 个参数的函数。
  • 状态只是评估为真或假。
  • 当我将超过 1 个参数传递给上述表达式时,它不喜欢使用逗号。

在 chrome 和 firefox 中,函数运行时会显示“alert-success”或“alert-info”。它错过了第一个参数。

我已经在 stackoverflow 上查看了答案,但无论如何它告诉我我正在做的事情是正确的。

任何帮助都会很棒。

0 投票
5 回答
396 浏览

c++ - while 循环中的智能指针测试:使用逗号运算符?

我最近看到这样的代码:

这是一个好主意吗?它有效吗?


我将添加相应的 for 循环以方便参考:

...也没有让我觉得真正的最佳...

0 投票
2 回答
33953 浏览

c++ - 数字常量之前的预期不合格ID?

我在线路上遇到错误102, 115, and 128。我究竟做错了什么?它说:

数字常量之前的预期不合格 id

我不知道那是什么意思。我已经尝试解决这个问题一周了,它将于本周三在我的 C++ 课上到期。我真的可以在这里使用一些外部建议。我究竟做错了什么:

0 投票
3 回答
4426 浏览

c++ - 在一行中删除多个指针。C++

这会删除所有指针还是仅删除第一个指针 p1?

0 投票
2 回答
1972 浏览

c - 像 "for(i=1;i<=10;printf("%d\n";i),i++) 这样的东西在 C 中是否有效且无 UB?

以下两个代码块是否完全相同并实现相同的东西?当我运行程序时它显示相同的东西,但我希望能得到一些严格的解释。

循环需要有效的forC 语句作为参数,不是吗?但是,即使我已经在 StackOverflow 上验证了类似语句x+=4,y=x*2;是安全的,因为这里的逗号充当序列点,但在上面的循环printf("%d\n",i),i++)中作为参数传递的语句是否相同?for

如果是,请费心回答由此产生的小问题:

  • 是否comma充当涉及许多逗号分隔的语句中的序列点

    函数调用如下:

    printf("Enter number\n"),scanf("%d",&number),printf("You entered %d",number);

0 投票
2 回答
1513 浏览

c++ - C ++ 11中的常量表达式中是否允许逗号运算符?

在回答关于 C++11的 SO 的这个问题的过程中,我意识到在 C++03(以及 C 中)中,在constant-expression中明确禁止使用逗号运算符。

C++03 Standard 关于常量表达式的第 5.19/1 段说:

[...] 特别是,除了 sizeof 表达式,不得使用函数、类对象、指针或引用,不得使用赋值、递增、递减、函数调用或逗号运算符

然而,在 C++11 中,最后提到逗号运算符的部分似乎消失了。虽然 C++11 标准的第 5.19/2 段明确规定赋值、递增、递减和非constexpr函数调用表达式不应作为常量表达式的子表达式出现,但逗号运算符的使用似乎并不被禁止了。

例如,以下程序在 GCC 4.7.2 和 Clang 3.3 上编译得很好std=c++11(除了编译器警告说逗号运算符无效并且xarr变量未使用):

但是,必须说,即使是以下程序也可以使用该-std=c++03选项(在 Clang 和 GCC 上)编译良好,这显然是正确的,鉴于上述 C++03 标准的引用:

问题:

C++03 和 C++11 在常量表达式中是否允许使用逗号运算符有区别,还是我遗漏了什么?

作为一个奖励(非建设性)问题,我很想知道为什么逗号运算符不能用于 C++03 中的常量表达式。

0 投票
6 回答
1279 浏览

c++ - 从 x?y:z 表达式中得到了意想不到的答案

这是一个简单的 C++ 片段:

我认为结果应该是:

但实际上结果是:

有人可以解释为什么maxx不是20吗?谢谢。

0 投票
3 回答
237 浏览

c++ - C++中逗号运算符的语法使用

我正在浏览别人的代码,但我无法获得以下语法

按照语义,很明显,在第一个中,变量 c 被分配了“L”或“R”。在第二个中,x-- 和 putchar() 都被执行。但是逗号运算符在这里的作用到底是什么?

0 投票
4 回答
558 浏览

c++ - 与 ? 一起使用时的逗号运算符优先级 : 操作员

我不知道为什么下面两个子程序的结果不同:

但是对于这些情况,结果是相同的:

为什么括号对后面的语句有影响"?",而对后面的语句没有区别":"?你有什么主意吗?