标签: comma-operator

C++ 逗号运算符的优先级

嗨,我对以下代码有些困惑:

int main()
{
    int sum = 0, val = 1;
    while(val <= 10)
        sum += val, ++val;     //source of problem

    cout<<"Sum of 1 to 10 inclusive is " << sum << endl;
    //
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我目前正在学习运算符优先级。知道逗号运算符在 C++ 运算符中的优先级最低,我希望 while 循环中的语句按以下顺序计算:

++val; //so that val is incremented to 2 the first time the code in the while loop is evaluated
sum += val; //so that the incremented value of val is added to the sum variable 
Run Code Online (Sandbox Code Playgroud)

但代码按此顺序评估:

sum += …
Run Code Online (Sandbox Code Playgroud)

c++ operator-precedence comma-operator

5
推荐指数
1
解决办法
128
查看次数

JavaScript 声明一个变量并在一个语句中使用逗号运算符?

众所周知,要声明多个变量,可以使用如下格式:

let k = 0,
    j = 5 /*etc....*/
Run Code Online (Sandbox Code Playgroud)

众所周知,要在一行中执行多个语句(这对箭头函数很有用,因此不必编写return关键字),还使用逗号“,”运算符,如下所示:

let k = 0,
    j = 5 /*etc....*/
Run Code Online (Sandbox Code Playgroud)

不是最优雅的例子,但重点是你可以在一行中执行多个语句,用逗号“,”分隔,并返回最后一个值。

所以问题是:

你如何结合这两种技术?意思是,我们如何在一行中声明一个变量,然后在一个逗号之后,将该变量用于某事?

以下不起作用:

let k = 0, console.log(k), k += 8
Run Code Online (Sandbox Code Playgroud)

未捕获的语法错误:意外的标记“。”

没有console.log,它认为我在重新声明k:

let k = 0, k += 8
Run Code Online (Sandbox Code Playgroud)

Uncaught SyntaxError: Identifier 'k' has already been declared
Run Code Online (Sandbox Code Playgroud)

并将整个内容放在括号中,如下所示:

(let k = 0, k += 8);
Run Code Online (Sandbox Code Playgroud)

Uncaught SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)

指的是关键字“让”。但是,没有那个关键字,就没有问题:

(k = 0, k += 8);
Run Code Online (Sandbox Code Playgroud)

除了 k 现在成为一个全局变量,这是不想要的。

这里有某种解决方法吗?

如何在 JavaScript 中将逗号运算符与局部变量声明一起使用?

编辑响应 VLAZ …

javascript string comma let comma-operator

5
推荐指数
1
解决办法
756
查看次数

AS3/JavaScript if语句逗号而不是&&

这在ActionScript 3和JavaScript中运行.为什么?我知道如何&&||工作,但一个清单?这个AS3具体吗?这是用其他语言吗?我是一个口呼吸的PHP/AS2程序员.或者每个人都已经知道这一点,我是一个不能正确阅读文档的工具?

AS3

if (true, true, true) {
     trace("true?")
}
//result - "true?" traced
Run Code Online (Sandbox Code Playgroud)

JavaScript的

if (true, true, true) {
    alert("true?");
}
//result - "true?" alert message popped up

if (false, false, false) {
    alert("true?");
}
else {
    alert("false");
}
//result - "false" alert message popped up

if(true, false, false) {
    alert("true?");
}
else {
    alert("false");
}
//result - "false" alert message popped up
Run Code Online (Sandbox Code Playgroud)

javascript boolean-logic if-statement actionscript-3 comma-operator

4
推荐指数
1
解决办法
1603
查看次数

如何在这里使用逗号运算符?

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

我不是C++的新手,但这是我第一次看到以下代码:

int a=0;
int b=(a=2,a+1);
Run Code Online (Sandbox Code Playgroud)

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

c++ comma-operator

4
推荐指数
1
解决办法
2302
查看次数

数值常量之前的预期不合格ID?

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

在数字常量之前预期的nonqualified-id

我不知道这意味着什么.我已经尝试解决这个问题已经有一个星期了,而且这个问题将在周三的C++课程中进行.我真的可以在这里使用一些外部建议.我究竟做错了什么:

#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
#include <string>

using namespace std;

double qMeter = 0;
double hMeter = 0;
double oneMeter = 0;
int solDay = 0;
string garbage;
string localTime;
string decSol;
ifstream input;
ofstream output;

//function prototypes
double low(double lowTemp);
double high(double highTemp);
float average(double avgTemp);

int main()
{

input.open("curiosity234x.dat"); //opens input data file
output.open("output.dat"); //opens output data file


  for (int i = 0; i < 4; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ comma-operator

4
推荐指数
1
解决办法
3万
查看次数

返回括号之间的值列表(10,20,30,40)?

我在Visual Studio 2012中使用C++(而不是C++/CLI).

我不明白为什么这段代码有效,我原本以为它会在编译时失败,但它在运行时甚至都不会失败:

double MyClass::MyMethod() const
{
    //some code here        
    return (10, 20, 30, 40);
}
Run Code Online (Sandbox Code Playgroud)

我错误地制作了这段代码,不是故意的,我在运行单元测试时注意到了这个错误.我很惊讶它有效.当我运行它时,它返回40,列表中的最后一个数字.

有人能解释一下这种语法的含义及其工作原理吗?

c++ comma-operator

4
推荐指数
1
解决办法
488
查看次数

使用printf的双括号时出现分段错误

#include<stdio.h>
#define POOLNAME_FMT "Hello"

void main() {

 printf((POOLNAME_FMT "Cannot allocate %d bytes" POOLNAME_FMT "in pool not enough memory",5));

}
Run Code Online (Sandbox Code Playgroud)

当我使用双括号时,为什么会出现分段错误printf.即printf(( ));

c linux printf segmentation-fault comma-operator

4
推荐指数
2
解决办法
517
查看次数

C标准 - 逗号运算符语法

根据C标准(和K&R),逗号运算符的语法如下:

expression:
    assignment-expression
    expression, assignment-expression
Run Code Online (Sandbox Code Playgroud)

但为什么这个陈述有效呢?

5+5, 1+1; 
Run Code Online (Sandbox Code Playgroud)

5 + 5和1 + 1不是赋值表达式,但C标准要求赋值表达式作为逗号运算符的操作数.

c syntax comma comma-operator

4
推荐指数
1
解决办法
85
查看次数

它是C语句的声明和初始化语句中的逗号运算符吗?

我正在阅读C编程语言,发现这句话:

在声明中分隔...变量的逗号...不是逗号运算符,也不保证从左到右的评估.

如果是这样,他们是否在此代码中使用逗号运算符?

int a=1, b=a+1, c=b+a+1, d=c+b+a+1;
Run Code Online (Sandbox Code Playgroud)

我很确定它会起作用.但如果它们不是逗号运算符并且不保证从左到右的顺序,则上述语句可能会失败,对吧?

c comma-operator

4
推荐指数
1
解决办法
1236
查看次数

无法理解这段代码?

任何人都可以帮助我理解以下代码: -

int r, countIt(int n) {
    while (r += "            2  "[n % 10] & 3, n /= 10);
    return r;
}
Run Code Online (Sandbox Code Playgroud)

我在codefights.com的挑战中找到了这段代码,https://codefights.com/challenge/v5Zg8trjoun3PTxrZ/solutions/Aj3ppbhSShixt4nBi

这是计算数字中孔数的解决方案.
例如

1111 = 0  
0000 = 4  
1234 = 0  
8888 = 8   
Run Code Online (Sandbox Code Playgroud)

我无法理解以下内容:
1.此代码的逻辑
2.逗号(,)运算符用于函数的返回数据类型
3.在字符串后使用[]运算符.
实际上整个代码.

c++ function comma-operator

4
推荐指数
1
解决办法
312
查看次数