2017-06-03 2 views

Antwort

2

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.

0

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 ist

In Ihrem pentrically Lauf, 3 Artikel wurden erfolgreich gelesen, so a hält 3

2

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); 
    } 
} 
0

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.

Verwandte Themen