Codestück!

Status
Nicht offen für weitere Antworten.

god3000

Mitglied
Hallo!

Welches der beiden Codestücke ist korrekt und warum?

Code:
 int x = 5; if ( x  = 5 ) ..;

  int x = 5; if ( x == 5) .. ;

Kann mir da bitte jemand weiterhelfen?

Danke, Gruß Sebi
 

Mizus

Bekanntes Mitglied
Verfasst am: 09. 03. 2004, 9:51 Titel: Codestück! Zitieren

--------------------------------------------------------------------------------

Hallo!

Welches der beiden Codestücke ist korrekt und warum?

Code:
int x = 5; if ( x = 5 ) ..;

int x = 5; if ( x == 5) .. ;


Kann mir da bitte jemand weiterhelfen?

Danke, Gruß Sebi

Hallo das zweite is richtig, weil beim ersten bestimmt ein Syntaxfehler entsteht. Da die eckige klammer offen ist beim b] muss sein...

Achja "=" ist ne Zuweisung und "==" ist ein vergleich...
Merke: in einer If()klaussel kann du nicht zuweisen, da ein Wahrheitswert bei rauskommen muss
 

Tobias

Top Contributor
Folgendes Codestück ist korrekt:

Code:
int x = 5;
if(x == 5) {
// Do something...
}

Aus dem simplen Grund, weil das "=" schon als Zuweisungsoperator definiert ist, und dementsprechend nicht auch noch auf Gleichheit testen kann.
Würdest du

Code:
int x = 5;
if(x = 5) {
// Do something...
}

schreiben, so würde x einfach nur 5 zugewiesen werden, was entweder true ergibt (als sogenannten Seiteneffekt) oder eine Exception auslöst, wenn die Typen nicht passen.
Denn woher soll der Compiler wissen, was du gemeint hast??

mpG
Tobias
 

god3000

Mitglied
god3000 hat gesagt.:
Hallo!

Welches der beiden Codestücke ist korrekt und warum?

Code:
 int x = 5; if ( x  = 5 ) ..;

  int x = 5; if ( x == 5) .. ;

Kann mir da bitte jemand weiterhelfen?

Danke, Gruß Sebi

sorry dass mit der eckigen klammer stammt aus dem forum, nicht aus dem codestück, das codestück macht keinen sinn, es ist nur zu verständnis... eigentlich sind doch beide korrekt oder, nur das eine ist eine zuweisung und das andere ein vergleich, oder lieg ich da falsch...
 

Tobias

Top Contributor
Ich muß mich selbst korrigieren, weil Java anders ist, als viele andere Sprachen:

Eine Zuweisung ergibt kein true als Seiteneffekt! Damit ist die erste Variante definitiv falsch.

mpG
Tobias
 

Mizus

Bekanntes Mitglied
Nein nur das zweite ist Richtig... Du kannst keine Zuweisung in einer If() Klausel machen...
In einer If() klausel wird nur prüft ob es Wahr oder nicht wahr ist. Demzufolge kann nicht stehen x=5; Da du dann würdet sagen.

1. :idea:
if ( x = 5)

ist( x soll 5 ) ? da kann also nicht wahr oder unwahr bei raus kommen.

2. :idea:

if(x == 5 )

ist( x gleich 5) ? da entsteht ein wahrheiswert...

:arrow: Noch Fragen???
 

god3000

Mitglied
nein, jetzt hab ich keine fragen mehr, alles super beantwortet..vielen dank für die schnelle antwort, hat mir sehr weitergeholfen....
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben