C++双for循环,第一个for循环没有大括号,怎么理解?
在C++中,for循环后面不一定非要加大括号{}
。如果没有加大括号,那么for循环后面紧跟着的那条语句将被视为循环体。这通常只适用于循环体只有一条语句的情况。
例如,下面的代码片段展示了一个没有使用大括号的for循环:
#include <iostream>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i)
std::cout << arr[i] << " ";
std::cout << std::endl;
return 0;
}
在这个例子中,std::cout << arr[i] << " ";
是for循环的唯一一条语句。由于没有使用大括号,这条语句会被反复执行5次,每次循环时i
的值都会增加。
然而,如果你想要循环体包含多条语句,你就必须使用大括号来定义循环体的范围。例如:
#include <iostream>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i) {
std::cout << arr[i] << " ";
// 这里可以添加更多的语句
}
std::cout << std::endl;
return 0;
}
在这个例子中,大括号内的所有语句都会被视为for循环体的一部分,并且会随着循环的每次迭代而执行。
如果不小心遗漏了大括号,但你的意图是让多条语句都在循环体内执行,那么代码的行为将不会按照你的预期进行。例如:
#include <iostream>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i)
std::cout << arr[i] << " ";
std::cout << "Extra output" << std::endl; // 错误!这行不在循环体内
std::cout << std::endl;
return 0;
}
在这个错误的例子中,你可能期望“Extra output”会在每次循环时都打印出来,但实际上它只会在循环结束后打印一次,因为它并不在for循环的大括号内,所以不被视为循环体的一部分。正确的做法是使用大括号来包含所有应该在循环体内执行的语句:
for (int i = 0; i < 5; ++i) {
std::cout << arr[i] << " ";
std::cout << "Extra output" << std::endl; // 正确!这行在循环体内
}