a=b=c=d fehlverhalten?
Übersicht
BlitzMax, BlitzMax NG
Beginners-Corner
MacintoshBetreff: a=b=c=d fehlverhalten? |
Antworten mit Zitat |
|
|---|---|---|
|
Mein kumpel und ich streiten uns grade darum, ob es ein fehler ist, das a nicht den wert von d enthält.
Ich bin der meineung es ist ein fehler, weil: stellt man das ganze in RPN notation um kann man genau erkennen das a am ende der wert von d zugewiesen wird. in C ist es auch so. Mein kumpel meint aber das das nicht Falsch sei. Es liegt ja warsch. daran das blitzmax das = für vergleichen UND zuweisung, anders als in z.B. C wo es noch das == gibt benutzt. was stimmt nun. ist es ein fehler? oder kann man das nicht so genau sagen? Danke Code: [AUSKLAPPEN] local a,b,c,d d = 15 a=b=c=d print( a ) '0, ? |
||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
| Es ist mal wieder kein Bug sondern BlitzMax Standardverhalten, deine Vermutung mit dem UND stimmt. Das muss man in einzelne Befehle unterteilen soweit mir bekannt. | ||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
Macintosh |
Antworten mit Zitat |
|
|---|---|---|
| ich habe nicht gesagt, dass es ein Bug ist ^^ ich frage nur... aber es schaut so nach einer nebenwirkung aus ^^, die daher kommt das es kein == gibt | ||
|
|
coolo |
Antworten mit Zitat |
|---|---|---|
|
Genau dem ist auch so.
BlitzMax ist eben ein Basic Dialekt und hat daher (zum Glück) nicht die Eigenheiten von C geerbt. Mal davon abgesehen, dass man auch in C solche Mehrfachzuweisungen meiden sollte (da sie schnell unübersichtlich werden) MUSS das in CMax so passieren, da es eben keine == gibt. Sobald eine Zuweisung/Function/Keyword vom Compiler in der Zeile gesichtet ist, werden die darauffolgenden Zuweisungsoperatoren automatisch als Vergleichsoperatoren gesehen. |
||
|
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
||
|
|
Hummelpups |
Antworten mit Zitat |
|---|---|---|
|
es gibt doch viele Situationen, wie auch die Reihenfolge der Abarbeitung von Funktionen in Parametern
die einfach nicht festgelegt sind, oder? myfunc( func1, func2) Ich glaube es ist nicht festgelegt |
||
|
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
|
Nicht festgelegt? Wie sollte man funktionierende Programme schreiben können, wenn das nicht festgelegt ist?
Der Compiler arbeitet von rechts nach links und von innen nach außen. |
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
|
|
FireballFlameBetreff: Re: a=b=c=d fehlverhalten? |
Antworten mit Zitat |
|---|---|---|
|
Macintosh: Richtig, es kommt daher, dass sowohl Vergleich als auch Zuweisung das = benutzen. Das ist kein Fehlverhalten.
Genauer gesagt hast du bei deinem Code: [AUSKLAPPEN] local a,b,c,d
eine Zuweisung zur Variablen a. Da solche Zuweisungen am Anfang der Zeile stehen und nicht irgendwo mittendrin, werden die restlichen = als Vergleichsoperatoren interpretiert.
d = 15 a=b=c=d print( a ) '0, ? Da auch nicht 3 Variablen gleichzeitig verglichen werden können, kommt dann praktisch das dabei heraus: Code: [AUSKLAPPEN] a = (b=c)=d
Heißt also: Dein Programm vergleicht b mit c und kriegt True, also eine (Integer-)1 heraus, weil beide 0 sind. Dann vergleicht es die 1 mit der 15 aus d und das Ergebnis, False, also 0, wird a zugewiesen |
||
|
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
||
Übersicht
BlitzMax, BlitzMax NG
Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group
