我是初学者,请告诉我为什么程序中的for循环之后没有大括号{ }
。我已就此问题发表评论。
void main()
{
int a[50],n,count_neg=0,count_pos=0,I;
printf("Enter the size of the array\n");
scanf("%d",&n);
printf("Enter the elements of the array\n");
for (I=0;I < n;I++) /* i dont understand why no {} occuerred after this for loop please explain*/
scanf("%d",&a[I]);
for(I=0;I < n;I++)
{
if(a[I] < 0)
count_neg++;
else
count_pos++;
}
printf("There are %d negative numbers in the array\n",count_neg);
printf("There are %d positive numbers in the array\n",count_pos);
}
答案 0 :(得分:3)
允许不为单行添加括号。但是我强烈建议不这样做。这是a famous bug,这可能是不使用括号的结果。
例如,如果你写
if(test)
foo();
以后需要第二个函数调用你可能会犯错误的写作
if(test)
foo();
bar();
不你想要的东西。
如果您从头开始使用括号并写
if(test) {
foo();
}
你没有这个问题:
if(test) {
foo();
bar();
}
答案 1 :(得分:1)
如果只有一个语句需要循环,即如果循环体只是一个语句,则可以省略大括号{ }
。这是递归的,例如
for(i = 0; i < n; ++i)
for(j = 0; j < m; ++j)
for(k = 0; k < l; ++k)
process(v[i][j][k]);
与
相同for(i = 0; i < n; ++i)
{
for(j = 0; j < m; ++j)
{
for(k = 0; k < l; ++k)
{
process(v[i][j][k]);
}
}
}
答案 2 :(得分:1)
如果您的代码由一行组成,则可以不带括号编写。
这不仅适用于循环,它也适用于if
if else
或else
等条件子句
例如:
if(a == b){
a++;
}
与
相同if(a == b)
a++;
答案 3 :(得分:-2)
您好,欢迎来到StackOverflow! :)
我一般不理解你的问题,但我仍然会告诉你以下内容: 在编程中,开始和结束括号{}用于标识代码块,该代码块将从左括号 {不间断直到结束括号} 执行。代码块用于将一段代码与另一段代码隔离开来。
示例1:
void Function1()
{
void Function2()
{
// Calculate
// Long Stuff
// Complicated
// Atom Bombs exploding
} // Close Function2
void Function3()
{
// Do
// Some
// Other
// Evil
// Stuff
} // Close Function3
}// Close Function1
void Function3()
{
InnerFunction(); // This will execute Function3, but without going to Function3,
// because the code of Function2 is ISOLATED with {} from the code of Function3
}// Close Function2