为什么我不需要括号for循环和if语句
我不代替,为什么我不需要括号在这种情况下为什么我不需要括号for循环和if语句
for (int i = 0; i < 10; i++)
if (num[i] < min)
min = num[i];
为什么我需要括号在这种情况下
int num[10], min;
for (int i = 0; i < 10; i++) {
cout << "enter 10 numbers" << endl;
cin >> num[i];
}
单个语句if和for循环不需要大括号。这里是讨论为什么大括号是一个很好的做法,即使是单个语句。
What's the purpose of using braces (i.e. {}) for a single-line if or loop?
因为你不知道。
它们是可选的。那就是这样。
如果您不使用大括号将多个语句分组到一个语句,那么只有for
或if
前导码之后的第一个语句被视为该构造的一部分。 (但是这个规则是传递的,所以你的任务是你if
是你for
的一部分一部分!)
需要注意的是压痕没有效果这是非常重要的。
很多人认为[引用需求]你应该总是使用大括号,为清晰起见。
其他人认为混淆可能很有趣;-) http://www.ioccc.org/ –
for
和if
都必须跟一个“语句”。 A“声明”可以是一个简单的语句,像min = num[i];
,更复杂的一个像if (num[i] < min) min = num[i];
,也可以是一个复合语句(即零或大括号括起来更简单语句),像{ std::cout << "enter 10 numbers\n"; std::cin >> num[i]; }
有人认为,使用语法冗余大括号混淆简单的语句是很好的风格。其他人没有。
一个for循环的语法是
for (init, condition, post) statement;
现在这意味着for(...)
之后的任何一个语句将是身体和会是什么跑了循环。
然后我们有if语句其中有
if(condition) statement;
语法所以我们可以看到,如果整个
if (num[i] < min)
min = num[i];
只是一个单一的声明,是所有你需要的对循环。
我们使用的原因{}当我们在一个循环或条件多于一行是让我们使用多语句循环/作为整个街区的条件被视为一个单独的语句。
如反应所示,不建议不带大括号。
for (int i = 0; i < 10; i++) /*For-loop only has one executable
*statement in its scope, the if-statement,
*so doesn't need braces.*/
if (num[i] < min) /*If-statement contains only one executable
*statement its scope, so doesn't need braces*/
min = num[i]; //One line of code to execute.
棒与支架,它会让你的生活更轻松。
谢谢,纠正。 – NonCreature0714
在FOR循环的情况下:您不必使用大括号,但根据我的知识,您应该。首先它增加了代码的可读性,它可以节省你对代码的无用调试。对于将来的读者,Oracle的代码约定清楚地表明你应该总是使用大括号。
在IF语句的情况下:对于单个语句,您不必使用大括号,但是如果您想在IF块中分组多个语句,则必须使用大括号。
我希望我的意见对你有用。
亮度轨道上的比赛总结得很完美 - 这只是一个很好的练习。很多程序员可能不会以那种懒惰的方式使用括号(毕竟它是可选的)。
如果您想要易于阅读的代码,甚至更重要的是易于调试,那么您应该养成在EVERY for循环和if语句之后使用括号的习惯。
一段时间后它可能会变得乏味,但就像我说的 - 这只是一个很好的做法。
好吧。没有支架的循环会很容易搞砸,特别是当程序员感到厌倦时。
但编译器可以理解它。
示例1:以;
结尾且紧跟在for语句后面的完整行属于for语句的范围。但后面的路线不会。试着编译并运行它。
#include <iostream>
int main(void){
for (int i = 0; i < 10; i++)
std::cout << "in scope of for" << std::endl;
std::cout << "out of scope of for" << std::endl;
}
例2:同为if
声明
#include <iostream>
int main(void){
if (1 == 1)
std::cout << "in scope of if" << std::endl;
std::cout << "out of scope of if" << std::endl;
}
例3:
#include <iostream>
int main(void){
int num[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int min = num[0];
for (int i = 0; i < 10; i++)
if (num[i] < min) //this if belong to the for above
min = num[i]; //this line belong to `if` above
//so this line also belong to the `for`
//as the `for` own the `if`
}
'iosteram'?说说累了!这是C++;在空参数列表中不需要'void'。 –
已修复。谢谢。 。 – rxu
我们基本上是用支架保持代码干净,就像我知道的编码,编译器不是很聪明,所以如果你在循环或if条件中有多个语句,那么我们使用括号(花括号{})来让编译器知道大括号中的每个语句是循环的一部分或if语句的一部分。
编译器非常聪明,但它无法读懂你的想法。 –
更好的让你保持它们。没有的语法只是容易出错。 –
语法允许。 – Jarod42