C++ 在for循环中将值设置为零的奇数用法

C++ 在for循环中将值设置为零的奇数用法,c++,C++,我遇到了这个for循环,这是我以前从未遇到过的,我不知道这是可能的。就个人而言,我会在循环的2个之间设置sum=0,而不是现在的位置 为什么sum不会在每次student_index增加时设置为0,是因为编译器在初始化第二个for循环时只查看一次第一个条件,然后只增加student_index,直到满足第二个条件 int main(int argc, char** argv) { int test_index, student_index, scores[3][5] = {

我遇到了这个for循环,这是我以前从未遇到过的,我不知道这是可能的。就个人而言,我会在循环的2个
之间设置
sum=0
,而不是现在的位置

为什么
sum
不会在每次
student_index
增加时设置为0,是因为编译器在初始化第二个for循环时只查看一次第一个条件,然后只增加
student_index
,直到满足第二个条件

int main(int argc, char** argv) {
    int test_index, student_index, scores[3][5] = {
        {92, 73, 57, 98, 89},
        {88, 76, 23, 95, 72},
        {94, 82, 63, 99, 94}
    };
    float sum;

    for (test_index = 0; test_index < 3; test_index++) {
        sum = 0; // This is where i would set `sum = 0`
        for (student_index = 0, sum = 0; student_index < 5; student_index++) {
            sum = sum + scores[test_index][student_index];
        }
        cout << "Average score for test nr. " << test_index + 1 << ": "
                << sum / 5 << endl;
    }
    return 0;
}
int main(int argc,char**argv){
智力测验指数,学生指数,分数[3][5]={
{92, 73, 57, 98, 89},
{88, 76, 23, 95, 72},
{94, 82, 63, 99, 94}
};
浮点数;
对于(test_index=0;test_index<3;test_index++){
sum=0;//这是我设置'sum=0'的地方`
对于(学生指数=0,总和=0;学生指数<5;学生指数++){
总和=总和+分数[测验指数][学生指数];
}
库特
是不是因为编译器在初始化第二个for循环时只查看一次第一个条件,然后只增加student_索引,直到满足第二个条件


语法为:

for (init; condition; increment)
在这种情况下,
init
语句使用

<>在C和C++编程语言中,逗号运算符(由令牌表示)是一个二进制算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回这个值(和类型)。 结果是:

init;
while (condition) {
    ...
    increment;
}
在本例中,由于逗号运算符的作用,init有多条指令,因此在循环体之前会发生多个事件,在循环内部不会重复

是不是因为编译器在初始化第二个for循环时只查看一次第一个条件,然后只增加student_索引,直到满足第二个条件


语法为:

for (init; condition; increment)
在这种情况下,
init
语句使用

<>在C和C++编程语言中,逗号运算符(由令牌表示)是一个二进制算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回这个值(和类型)。 结果是:

init;
while (condition) {
    ...
    increment;
}

在本例中,由于逗号运算符的作用,init有多条指令。因此,在循环体之前会发生多件事情,而不会在循环内部重复。

这是因为for循环是如何工作的

(;;)


这些部分中的每一部分都可以是一个完整的表达式(包括一个逗号分隔的表达式列表)。

这是因为for循环是如何工作的

(;;)


这些部分中的每一部分都可以是一个完整的表达式(包括一个逗号分隔的表达式列表)。

两者都是等效的。第一部分(初始化器)
for
语句的子句只在第一次迭代之前执行;因此
student_index
sum
都被设置为零。在迭代之间,它执行第三个(迭代)子句,然后检查第二个(条件)子句;这两个子句对
sum
都不起作用

如果每次都执行初始化器,那么规范的
for
语句

for (i = 0; i < n; ++i) whatever;
(i=0;i
将永远循环,每次将
i
重置为零,构造将完全无效。

两者都是等效的。第一个(初始化器)
for
语句的子句只在第一次迭代之前执行;因此
student_index
sum
都被设置为零。在迭代之间,它执行第三个(迭代)子句,然后检查第二个(条件)子句;这两个子句对
sum
都不起作用

如果每次都执行初始化器,那么规范的
for
语句

for (i = 0; i < n; ++i) whatever;
(i=0;i 将永远循环,每次将
i
重置为零,构造将完全无用。

如果我们查看for语句的
6.5.3节,我们可以看到
for
的描述如下:

for(对于init语句conditionopt;expressionopt)语句

for (i = 0; i < n; ++i) whatever;
相当于

{
   for-init-statement
   while ( condition ) {
    statement
    expression ;
   }
 }
从第6.5节可以看出,for init语句允许包含表达式语句:

在本例中,它使用来初始化
学生索引
总和

student_index = 0, sum = 0 
                 ^                 
如果我们看一下for语句的
6.5.3

for(对于init语句conditionopt;expressionopt)语句

for (i = 0; i < n; ++i) whatever;
相当于

{
   for-init-statement
   while ( condition ) {
    statement
    expression ;
   }
 }
从第6.5节可以看出,for init语句允许包含表达式语句:

在本例中,它使用来初始化
学生索引
总和

student_index = 0, sum = 0 
                 ^                 

您的代码中有一个输入错误,
som
vs.
sum
。请复制并粘贴准确的代码。这是错误的代码——可能会让读者感到困惑,但正如其他人所指出的,它是有效的——不太可能让编译器感到困惑。请明确您要问的是什么结构。目前的情况是,
sum
当场设置为零在你说你希望它被设定的时候。你的困惑是混淆的。“Kethththppson固定。”:我想我已经拥有了它们。通常我把所有的东西都改成英文,以便于阅读。为了将来的参考,你可以考虑首先确定你的(简化和/或翻译)。源代码在复制并粘贴到问题中之前进行编译。可能很难判断输入错误是否与您所问的问题有关。您的代码中有输入错误,
som