簡體   English   中英

for 循環內的 for 循環可以在沒有大括號的情況下工作嗎?

[英]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;
}

沒有花括號的 for 循環內部的 for 循環如何工作?

C 中的for循環語法如下所示

for ( init; condition; increment ) statement

where statement可以是單個語句(例如printf("%d ", a[i][j]); )或復合語句

復合語句由包含在一組大括號內的一個或多個語句組成:{}。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM