Salve, ho iniziato a leggere la guida per il linguaggio C presente sul sito, nella lezione 20 vengono spiegati i controlli iterativi, tutto chiaro, ho però problema a capire la condizione di un while in un esempio:

codice:
#include <stdio.h>

int main()
{
int valore;
 
while (scanf("%d", &valore) == 1 && valore != 0)
{
   if (valore < 0)
   {
      printf("Valore non consentiton");
      break;
      /* esce dal ciclo */
   }
 
   if (valore > 100)
   {
      printf("Valore non consentiton");
      continue;
   }
 
   int quadrato = valore * valore;
   printf("%d n", quadrato);
}
}
Il programma funziona come descritto nella guida, quindi se si inizializza la variabile "valore" a 0 si esce dal programma, non capisco però perché nelle condizioni del while ci sia == 1 && valore != 0 e non solamente != 0 e provando a mettere solamente != 0 quando inserisco 0 non esce dal ciclo. (esce con il punto "."). Grazie in anticipo.