Warum erzeugt dieser Code eine Warnung, die sich auf den Komma-Operator bezieht?

8

Beim Antworten auf diese Frage bin ich auf diesen Code gestoßen ...

> %Vor%

... welches einen Tippfehler enthält. Der zweite (intendierte) Operator << in Zeile 6 wurde versehentlich als < geschrieben.

Abgesehen davon besteht die Kompilierung des Codes mit GCC 4.3.4 oder 4.4.3 in einer Warnung:

%Vor%

Meine Frage: Warum wird diese besondere Warnung erzeugt? Auf welchen Komma-Operator bezieht es sich?

HINWEIS: Ich plädiere nicht dafür, absichtlich eine einzige < in einer cout -Anweisung zu verwenden. Ich bin nur über diese Warnung gestolpert und habe versucht, eine Antwort auf die andere Frage zu finden. Ich bin damit verbunden und bin neugierig, warum der Compiler es erzeugt.

    
razlebe 14.04.2011, 15:27
quelle

2 Antworten

6

Ich glaube, sie haben nur vergessen, den Warnungstext zu ändern

%Vor%

Der Operator expr, expr wertet den linken Operanden aus, wertet dann den rechten Operanden aus und liefert das Ergebnis der Auswertung des rechten Operanden. Wenn der rechte Operand keine Wirkung hat und sein Wert nicht verwendet wird, handelt es sich wahrscheinlich um einen Fehler im Programm.

Jetzt haben sie nur den obigen Warnungstext missbraucht, um vor anderen Binäroperatoren zu warnen.

    
Johannes Schaub - litb 14.04.2011, 15:30
quelle
1

Ihr gegebenes Programm erzeugt diese Warnung nicht mit MSVC2010, es erzeugt nur

  

Warnung C4552: '& lt;' : Operator hat keine Wirkung; erwarteter Operator mit Nebeneffekt

Da sollte ein << vor income; sein. (Hinweis: Ideone erzeugt überhaupt keine Warnung.)

    
Xeo 14.04.2011 15:29
quelle

Tags und Links