C++ 在for循环中将值设置为零的奇数用法
我遇到了这个for循环,这是我以前从未遇到过的,我不知道这是可能的。就个人而言,我会在循环的2个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] = {
之间设置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