Dalam program, saya telah memberikan kondisi untuk mencetak nilai 'a' kurang dari lima. tetapi telah dicetak termasuk lima. apa mungkin alasannya?

#include <stdio.h>
int a = 0
int main()
{   
    while(a < 5)
    {   
       a++;
       printf("%i\n",a);
    } 
}

Hasil dari program ini adalah 2 3 4 5

c
-1
dinesh 26 Mei 2021, 11:43

1 menjawab

Jawaban Terbaik

Masalah dengan kode itu adalah urutan operasi yang dilakukan. Pertimbangkan iterasi loop terakhir: a adalah 4 di awal loop, jadi pemeriksaan a < 5 berhasil dan loop dimasukkan. Kemudian a++ menambah a menjadi 5 — tetapi loop sudah dieksekusi. (Kondisi loop hanya diperiksa persis ketika ditemui.) Kemudian baris berikut mencetak 5, dan kontrol kembali ke atas, keluar dari loop karena a < 5 sekarang salah.

Secara umum, Anda ingin menambah setelah mencetak di sini:

#include <stdio.h>

int main (void) {
  int a = 1; // starting from 1, not 0, since we're going to increment after
  while (a < 5) {
    printf("%d\n", a);
    a ++;
  }
  return 0;
}

Tentu saja, loop itu persis seperti yang dirancang untuk loop for:

#include <stdio.h>

int main (void) {
  for (int a = 1; a < 5; a ++)
    printf("%d\n", a); // no braces = only one statement inside the loop
  return 0;
}
1
aaaaaa123456789 26 Mei 2021, 08:59