BMX und Mehrfachzuweisungen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

billykater

Betreff: BMX und Mehrfachzuweisungen

BeitragFr, Jul 29, 2005 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Global p1,p2,p3,p4
Print p1+"|"+p2+"|"+p3+"|"+p4
p1 = p2 = 0
Print p1+"|"+p2+"|"+p3+"|"+p4
p1 = p2 = p3 = 0
Print p1+"|"+p2+"|"+p3+"|"+p4
p1 = p2 = p3 = p4 = 0
Print p1+"|"+p2+"|"+p3+"|"+p4
'
p1 = 0
p2 = 0
p3 = 0
p4 = 0
'
p2 = p3 = p4 = 1
Print p1+"|"+p2+"|"+p3+"|"+p4
p2 = p3 = p4 = 2
Print p1+"|"+p2+"|"+p3+"|"+p4


Bei diesem Code kommt bei mir dieses Ergebniss

Code: [AUSKLAPPEN]

0|0|0|0
1|0|0|0
0|0|0|0
1|0|0|0
0|1|0|0
0|0|0|0


irgendwie scheint BMX die Mehrfachzuweisungen falsch zu interpretieren

rema

BeitragFr, Jul 29, 2005 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ui, ein gefährlicher Bug, so wie ich das meine...

Code: [AUSKLAPPEN]
Global p1=0
Global p2=0
Global p3=0
Global p4=0

Print "1) "+p1+"|"+p2+"|"+p3+"|"+p4

p1 = p2 = 0

Print "2) "+p1+"|"+p2+"|"+p3+"|"+p4


Das heisst: p2 = 0 ist wahr, also wird wahr zu p1 zugewiesen

Pendant zu:

if p2 = 0 then p1 = true

kannst mal versuchen global p2 = 1. So ist p1 = fals

TheShadow

Moderator

BeitragFr, Jul 29, 2005 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ist kein bug

x=y=1

ist das selbe wie

if y=1 then x=1 else x=0

einfacher zu lesen ist es so:

x=(y=1)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

billykater

BeitragFr, Jul 29, 2005 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
@TheShadow
Das mit den hatte ich mir auch gedacht aber trotzdem danke für die klarstellung

nur was passiert bei der vorletzten zeile
p2 = p3 = p4 = 1

wenn am statt 1 eine andere Zahl wählt kommt immer 0 heraus ich vermute mal das hat was mit True = 1 zu tun
 

Dreamora

BeitragFr, Jul 29, 2005 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
p2 = (p3 = (p4 = 1 ))

wenn p3 = (p4 = 1 ) ist und p4 = 1 (oder was auch immer du da einsetzt), so ist p2 = 1 andernfalls 0.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rema

BeitragFr, Jul 29, 2005 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich sollte wie in C/C++ ein expliziter Vergleich durch == erfolgen und eine Zuweisung durch =

Den dies ist eigentlich ein undokumentiertes Vorgehen.

Naja, wen mans weiss, so ist es halb so wild...
 

Dreamora

BeitragFr, Jul 29, 2005 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
rema hat Folgendes geschrieben:
Eigentlich sollte wie in C/C++ ein expliziter Vergleich durch == erfolgen und eine Zuweisung durch =

Den dies ist eigentlich ein undokumentiertes Vorgehen.

Naja, wen mans weiss, so ist es halb so wild...


Kann ich mich nicht anschliessen. Die mathematische Variante würde ich vorziehen (wie sie Eiffel und andere Sprachen nutzen) mit

= Vergleich
:= zuweisung


Sonst könnte mans ja glei wie PHP und andere machen:

= Zuweisung
== Vergleich
=== Typenvergleich

Und ich finde diese = Verkettung ehrlich gesagt kein bisschen "lesefreundlich"
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

billykater

BeitragFr, Jul 29, 2005 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Global p1,p2,p3,p4
p1 = 3
p2 = 4
p3 = 5
p4 = 6
p2 = p3 = p4 = 2
Print p1+"|"+p2+"|"+p3+"|"+p4


ergibt 3|0|5|6 d.h. BM interpretiert nur das erste = als Zuweisung alle anderen sind einfache vergleiche ==
sollte man vielleicht für andere Leute irgendwo als hinweis hinposten

Jolinah

BeitragSa, Jul 30, 2005 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja das ist Geschmackssache..

Ich für meinen Teil find die Sprachen doof die := oder sogar ::= für einfache Zuweisungen benutzen. Ich bin zwar nicht so der Mathe Professor, aber werden in Mathe nicht auch Zuweisungen immer mit = gemacht? Also ich hätte zumindest noch nie gesehen dass da in Physik irgendwie v := 10km/h steht etc..

Zudem ist == besser für die schreibfaulen Very Happy
Zuweisungen kommen öfter vor als Vergleiche. Und bei := muss man zwei verschiedene Tasten drücken wo man mit == den Finger schön auf der selben Taste lassen kann ^^ Naja das war nicht wirklich ernst gemeint, aber wer weiss, vielleicht ist ja genau aus dem Grund das == entstanden Wink

Ich hab es mir halt so angewöhnt, da ich viel C# benutze.

TheShadow

Moderator

BeitragSa, Jul 30, 2005 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
== mochte ich nie... bb macht es schon intuitiv wie es nur geht...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group