[英]For loop inside for loop works without a curly brackets?
沒有花括號的 for 循環內部的 for 循環如何工作? 如您所見,while 循環中也有兩個 for 循環,但它們需要大括號,但在該嵌套循環的主語句中不需要大括號?
我對此感到困惑,有人可以解釋嗎?
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n);
int size=2*n-1;
int start=0;
int end=size-1;
int a[size][size];
while(n != 0)
{
for(int i=start; i<=end;i++){
for(int j=start; j<=end;j++){
if(i==start || i==end || j ==start || j==end)
a[i][j]=n;
}
}
++start;
--end;
--n;
}
for(int i=0;i<size;i++){
for(int j=0;j<size;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
這段代碼的格式很差,這隱藏了循環實際在做什么:
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
printf("%d ", a[i][j]);
printf("\n");
}
內部循環不需要大括號,因為它只執行一個語句( printf
調用)。 但是,最好將所有循環體和條件表達式放在大括號中。
在 c loops
中,如果沒有括號, if
語句僅適用於下一個語句。
在你的例子中:
for(int i=0;i<size;i++) {
for(int j=0;j<size;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
相當於:
for(int i=0;i<size;i++) {
for(int j=0;j<size;j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.