Ich bin neu in C entschied mich, es wegen bestimmter Job-Anforderungen selbst zu lernen (kannte einige Java vor diesem). Ich hoffe, ich werde nicht für diese Frage downvoted, weil ich überall über while
Loops in C, die Verwendung von scanf()
und Variablenzuweisungen gesucht habe, um zu sehen, ob ich irgendetwas verpasst habe, aber nichts erklärt, warum dieser Code unten auch beim Check läuft auf der Variablen status
für die While-Schleife ist nicht True mehr. Dieses Programm wurde einem Lehrbuch entnommen, aber es erklärt nicht, warum es funktioniert, es ist nur ein Beispiel.While Schleife in C trat aus, auch wenn die Bedingung nicht wahr ist
#include <stdio.h>
#include <stdlib.h>
int main(void) {
long num;
long sum = 0L;
int status;
printf("Please enter an integer to be summed ");
printf("(q to quit): ");
status = scanf("%ld", &num);
while (status == 1) {
sum = sum + num;
printf("Please enter next integer (q to quit): ");
status = scanf("%ld", &num);
}
printf("Those integers sum to %ld.\n", sum);
return 0;
}
Wenn ich eine Nummer auf der Konsole eingeben, die Nummer ist eindeutig auf die Variable status
zugeordnet und aus meinem Verständnis (als Eingabe von scanf
gelesen werden). Die while
Schleife überprüft jedoch jede Iteration, wenn status == 1
also warum, wenn ich eine Zahl eingib von scanf
nach die while-Schleife beginnt und das bekommt status
die Schleife läuft? Die status
Variable ist eindeutig nicht mehr 1
an dieser Stelle. Aber es hört auf, wenn ich wie vorgeschlagen durch den gedruckten Satz eingeben, um q einzugeben, um zu beenden.
ich in Betracht gezogen habe, dass es vielleicht ist die Überprüfung, ob der Wert, den Sie ein integer
ist eingegeben oder long
zu beginnen, und wenn es keiner von denen ist (zum Beispiel, wenn der Eingang ist ein char
), um die Schleife brechen. Aber das Problem ist, ich kann nirgends eine Bestätigung oder Erklärung dafür finden, warum ist nicht die Prüfung für die while
Schleife überprüfen, ob status
ist, dass die genaue ganze Zahl 1
.
Sie haben einen Tippfehler: '% 1d' ->'% ld' – LPs
Sie lesen keine Zahl in 'Status'. Sie lesen eine Zahl in 'num' und dann erhält' status' die * Anzahl der Werte, die im 'scanf' Aufruf gelesen werden. Solange Sie eine gültige Zahl eingeben, wird 'status' 1 – Erik
Warum denken Sie, dass die' status'-Variable nicht mehr eins ist? Du sagst es ist "Klar nicht mehr 1", aber warum sollte es nicht immer eins sein? –