while文 - 繰り返しの構文

while文を使用すると繰り返しが書けます。

while (繰り返し条件) {
  
}

while文で合計を求めるサンプルです。

#include <stdint.h>
#include <stdio.h>

int main(void) {
  
  // while文で合計を求める
  int32_t total = 0;
  int32_t i = 0;
  while (i < 10) {
    total += i;
    i++;
  }
  
  printf("%d\n", total);
}

0~9までの合計が出力されます。

45

上記のwhile文はfor文を使って簡潔に書くことができます。

while文とfor文の使い分け

while文とfor文はどのように使い分けるのでしょうか?

for文が適しているサンプル

配列などインデックスを使う処理は、for文で書いた方が、わかりやすく簡潔に書けます。インデックスの間隔が+1や+2などの固定されている場合はfor文で十分です。

#include <stdint.h>
#include <stdio.h>

int main(void) {
  
  int32_t nums[3] = {1, 3, 5};
  
  // for文で合計を求める
  int32_t total = 0;
  for (int32_t i = 0; i < 3; i++) {
    total += nums[i];
  }
  
  printf("%d\n", total);
}

while文が適しているサンプル

上記に当てはまらない場合は、while文を使って書きます。これは、絶対的な基準というわけでもないので、おおまかな目安としてください。

たとえば、文字列の終端文字「\0」を見つけるまでという処理は、whileが適しているように感じます。

#include <stdint.h>
#include <stdio.h>

int main(void) {
  
  // 文字列定数
  const char* string = "abc";
  
  // 一文字(文字列定数の先頭)を指すポインタ
  const char* buf_ptr = string;

  // 終端文字「\0」が現れるまで繰り返す
  while (*buf_ptr != '\0') {
    
    // *で文字の実態を取り出して出力
    printf("%c\n", *buf_ptr);
    
    // ポインタをインクリメントして文字位置を進める
    buf_ptr++;
  }
}

関連情報