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++; } }