int main()
{
long int a = scanf("%ld %ld %ld",&a,&a,&a);
printf("%ld",a);
return 0;
}
Die Ausgabe von diesem ist 3 kann mir jemand sagen, wie?Die Ausgabe von diesem ist 3 kann mir jemand sagen, wie?
int main()
{
long int a = scanf("%ld %ld %ld",&a,&a,&a);
printf("%ld",a);
return 0;
}
Die Ausgabe von diesem ist 3 kann mir jemand sagen, wie?Die Ausgabe von diesem ist 3 kann mir jemand sagen, wie?
Nach scanf
mit der Verwendung von &a
und tun ihre Arbeit, der Rückgabewert von scanf
beendet wird a
zugeordnet, die 3
sein kann, wenn der Eingang mit drei Leerzeichen getrennt ganze Zahlen beginnt.
Der Rückgabewert ist die Anzahl der erfolgreich abgeglichenen und zugewiesenen Eingabeelemente.
Sie nehmen drei Elemente als Eingabe, auch wenn Sie alle Eingaben von scanf in einem sammeln, schließlich wird es den Rückgabewert von scanf zu halten, die erfolgreich
lesen Anzahl der Elemente istIn Ihrem pentrically Lauf, 3 Artikel wurden erfolgreich gelesen, so a hält 3
Sie sollten das Handbuch von scanf()
lesen.
Rückgabewert
Diese Funktionen geben die Anzahl der Eingabeelemente erfolgreich abgestimmt und zugeordnet, die als vorgesehen weniger sein kann, oder sogar Null im Falle eines frühen Anpassungsfehler.
Der Wert EOF wird zurückgegeben, wenn das Ende der Eingabe vor der ersten erfolgreichen Konvertierung oder einem Übereinstimmungsfehler erreicht wird. EOF wird auch zurückgegeben, wenn ein Lesefehler auftritt. In diesem Fall wird der Fehlerindikator für den Datenstrom (siehe ferror (3)) gesetzt, und errno wird gesetzt, um den Fehler anzuzeigen.
So wie Sie wollen, dass scanf()
Parse 3 long int
, kann es EOF
, 0
, 1
, 2
oder 3
zurückzukehren.
Übrigens ist die Art der Rückkehr von scanf()
int
, nicht long int
.
#include <stdio.h>
int main(void)
{
long int al, bl, cl;
int ret = scanf("%ld %ld %ld", &al, &bl, &cl);
printf("ret = %d:", ret);
if (ret == 3) {
printf(" al = %ld, bl = %ld, cl = %ld\n", al, bl, cl);
}
}
Ja, @Pras ist korrekt. Da Sie (scheinbar) erfolgreich drei Werte von der Eingabe gelesen haben, ist der Rückgabewert von scanf drei. Aber es ist sehr schlechte Programmierpraxis, um den Wert der gleichen Variablen mehr als einmal in einer einzigen Anweisung verwenden. In diesem Beispiel setzen Sie den Wert von "a" vier Mal, drei als Ergebnis der Scan-Eingabe von der Eingabe, und die vierte als die Zuweisung des Rückgabewerts. Wenn Sie a nicht als Rückgabewert des Aufrufs zugewiesen hätten, wäre der Wert von "a" unvorhersehbar, da die Reihenfolge, in der Argumente verarbeitet werden, implementierungsabhängig ist. Wenn Sie "11 22 33" eingeben, könnte "a" 11 oder 33 ... oder sogar 22 sein, je nachdem, wie Ihr Compiler scanf behandelt.
Sie vergessen, ein Eingabebeispiel anzugeben, das Ihrem Ausgabebeispiel entspricht. – Stargateur
Verwenden Sie "42 41 vierzig" als Eingabe oder "ein halbes Dutzend". – pmg