If-Anweisung funktioniert nicht?

Eroli

Erfahrenes Mitglied
Hallo zusammen,

hoffe ich habe das richtige Forum erwischt.

C#:
                    if (m_Waypoints[j].X - m_DiffusionX < m_Creep[i].Position.X < m_Waypoints[j].X + m_DiffusionX)
                    {
//machwas!
                    }

Diese Anweisung klappt nicht. Fehler:
Der Operator "<" kann nicht auf Operanden vom Typ "bool" und "int" angewendet werden.

Die If-Anweisung sollte herausfinden, ob der Wert m_Creep[i].Position.X größer als m_Waypoints[j].X - m_DiffusionX und kleiner als m_Waypoints[j].X + m_DiffusionX ist.

Muss ich das so machen?
C#:
                    if (m_Waypoints[j].X - m_DiffusionX < m_Creep[i].Position.X && m_Creep[i].Position.X < m_Waypoints[j].X + m_DiffusionX)
                    {
//machwas!
                    }
So würde es auch klappen, aber ich finde den Ausdruck im ersten Codebeispiel auch i.O.:confused:


Eroli
 
Hallo,

Du musst die 2. Variante nehmen. Das Ergebnis einer Operation "a < b" ist boolean, also wahr oder falsch. Dein Ausdruck ist jedoch "a < b < c", richtig geklammert sieht es so aus: "(a < b) < c". Eine Typauflösung zeigt:

1. Schritt: (zahl < zahl) < zahl
2. Schritt: boolean < zahl

Der 2. Schritt ist eben nicht möglich.

Du musst also die Variante mit der logischen Und-Verknüpfung nehmen (&&).
 

Neue Beiträge

Zurück