a=b=c=d fehlverhalten?
Übersicht

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


Powered by phpBB © 2001 - 2006, phpBB Group