嗨,我对以下代码有些困惑:
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) 众所周知,要声明多个变量,可以使用如下格式:
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 …
这在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
我不是C++的新手,但这是我第一次看到以下代码:
int a=0;
int b=(a=2,a+1);
Run Code Online (Sandbox Code Playgroud)
那是C++代码.你能告诉我这里发生了什么吗?变量b如何得到值3?
我在线路上遇到错误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) 我在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,列表中的最后一个数字.
有人能解释一下这种语法的含义及其工作原理吗?
#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标准(和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编程语言,发现这句话:
在声明中分隔...变量的逗号...不是逗号运算符,也不保证从左到右的评估.
如果是这样,他们是否在此代码中使用逗号运算符?
int a=1, b=a+1, c=b+a+1, d=c+b+a+1;
Run Code Online (Sandbox Code Playgroud)
我很确定它会起作用.但如果它们不是逗号运算符并且不保证从左到右的顺序,则上述语句可能会失败,对吧?
任何人都可以帮助我理解以下代码: -
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.在字符串后使用[]运算符.
实际上整个代码.
comma-operator ×10
c++ ×5
c ×3
comma ×2
javascript ×2
function ×1
if-statement ×1
let ×1
linux ×1
printf ×1
string ×1
syntax ×1