verkürzte schreibweise in bb

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Sterbendes Lüftlein

Betreff: verkürzte schreibweise in bb

BeitragFr, Dez 24, 2010 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Hubsi

BeitragFr, Dez 24, 2010 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Indirekt... Wenn Du IDEal als Entwicklungsumgebung nutzt kannst Du folgendes schreiben:

BlitzBasic: [AUSKLAPPEN]
variable++

und der Editor macht dann dieses draus:
BlitzBasic: [AUSKLAPPEN]
variable=variable+1


Das ganze geht natürlich auch mit "--". Der Editor erledigt also das was der Compiler nicht verstehen würde Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Sterbendes Lüftlein

BeitragFr, Dez 24, 2010 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Dottakopf

BeitragFr, Dez 24, 2010 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weis aber nicht ob es gerade Projetktechnisch sinnvoll ist, in seinem code mit irgendwelchen c# codefragmenten zu arbeiten... die auch nur von einer speziellen IDE unterstützt werden.
Rechtschreibfehler gelten der allgemeinen Belustigung!

Starwar

BeitragFr, Dez 24, 2010 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man "a++" eingibt wird das "a++" durch "a=a+1" ersetzt Wink
MFG

Xeres

Moderator

BeitragFr, Dez 24, 2010 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist die automatische Ersetzung die da läuft - alles ist und bleibt 100% BB Code, es ist nur schneller zu tippen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Raiden93

BeitragFr, Dez 24, 2010 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
also kapiere ich das jetzt so
Gold++ 1 und wen ich das save oder Compille wird das zu Gold = Gold +1 und wenn ich es dann mit BB öffne ist es auch wieder Gold = Gold +1 damit es ja kein Fehler mit dem Compiller gibt oder?

NightPhoenix

BeitragFr, Dez 24, 2010 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist wie in C

Code: [AUSKLAPPEN]
Gold++
Ist das Gleiche wie
Code: [AUSKLAPPEN]
Gold = Gold + 1


+ 2 oder +3 kannst du nicht einfach dahinter schreiben
Das ++ ist nur eine Vereinfachung, weil man die Operation Var = Var + 1 sehr oft braucht.

Unser Dozent sagte mal dass das durch die natürliche Faulheit der Menschen entstanden ist. Und da die Entwickler von C Menschen waren kam das so zustande. Wink (spaßig betrachten)

*edit*
Und nein wenn es in die Datei rein geschrieben wird dann sollte das auch weiterhin so drin stehen. Auch wenn du es in einem anderen Editor öffnest.
Das sollte auch nix mit dem Editor zu tun haben. Theoretisch wandelt das der Präprozessor vom Compiler sowieso wieder in Var=Var+1 um.

Tennisball

BeitragFr, Dez 24, 2010 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann es natürlich auch einfach mal ausprobieren. Ergebnis: IDEal ändert a++ sofort in a=a+1, wenn man es so einstellt.

mfg,
Tennisball

NightPhoenix

BeitragFr, Dez 24, 2010 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut das macht dann aber IDEal für die Leute die von C kommen, aus Gewohnheit. Das hat dann aber auch nix mit dem Compiler von BB zu tun.

maximilian

BeitragFr, Dez 24, 2010 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
a++ ist in C++ NICHT das gleiche wie a=a+1.

Es ist nämlich: (a=a+1)-1, soll heißen:

a++;
func(a) ; wenn a vorher 4 war ist es jetzt 5

ist etwas anderes als

func(a++) ; wenn a vorher 4 war ist es jetzt 5, die Funktion wird aber mit (a)-1 = 4 aufgerufen
Variety is the spice of life. One day ignore people, next day annoy them.
 

furbolg

BeitragFr, Dez 24, 2010 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
maximilian hat Folgendes geschrieben:
a++ ist in C++ NICHT das gleiche wie a=a+1.

Es ist nämlich: (a=a+1)-1, soll heißen:


Falsch, es bedeutet nicht "(a=a+1)-1" sondern der Wert der Variable wird erst nach dem Auslesen erhöht. Um das zu Vermeiden kann man ++a benutzen (Post- und Preinkrementation).

maximilian

BeitragFr, Dez 24, 2010 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Falsch


Es ist überhaupt nicht falsch.

(a=a+1)-1 ist eine völlig korrekte syntaktische Umschreibung für die Semantik der Postinkrementierung. Wie der Compiler das nun genau macht ist völlig egal, dafür gibt es keine Regeln.
Variety is the spice of life. One day ignore people, next day annoy them.
 

BBPro2

BeitragFr, Dez 24, 2010 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Es ist überhaupt nicht falsch.

(a=a+1)-1 ist eine völlig korrekte syntaktische Umschreibung für die Semantik der Postinkrementierung. Wie der Compiler das nun genau macht ist völlig egal, dafür gibt es keine Regeln.


nein ist es nicht ?
bei (a=a+1)-1 wäre a am ende nicht um 1 höher. ist es aber bei a++

(a=a+1)-1 is einfach nur irgendein käse der mit inkrementierung nix zu tun hat Wink

Xaymar

ehemals "Cgamer"

BeitragFr, Dez 24, 2010 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
a++ ist in C++ NICHT das gleiche wie a=a+1.

Doch. Den overload vom operator++ in GNU-C++ kannst du dir ja ansehen, ist ja direkt in MinGW/GNUGCC drin.
Zitat:
Wie der Compiler das nun genau macht ist völlig egal, dafür gibt es keine Regeln.

wieder falsch, C++ 97 Standard usw. Sogar MSVC++ ist auf einen Standard festgelegt.

und (a=a+1)-1 ist volliger quatsch. Da meckert der compiler nämlich daran: Code: [AUSKLAPPEN]
error: expected ')' before '=' token

Und passieren würde auch nichts, da du von einer Gleichung 1 abziehst. Richtig wäre hier beim auruf func(a++):
Code: [AUSKLAPPEN]
func(a);
a++;
//oder direkt der overload operator++
a=a+1;


furbolg hat hier schon recht. Man kann den operator zwar überladen, standardmäßig ists a=a+1, in beiden varianten.

So und nu BTT!
Warbseite

Eingeproggt

BeitragFr, Dez 24, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, Moment, noch nicht BTT.
Ihr habt ja alle Recht. Auch Maximillian.
(a=a+1)-1
ist kein völliger Käse sondern genau das was gemacht wird.
Zuerst wird die Variable a um 1 erhöht und das in a gespeichert (Inkrement, juhu).
Dann muss allerdings von der um 1 erhöhten Variable wieder 1 abgezogen werden, da wir uns ja alle einig sind, dass der "alte" Wert von a verwendet wird, der Wert vor der Erhöhung (Postinkrement, juhu). Und den kriegt man mit -1.

Eigentlich soweit sonnenklar, man muss es nur besser beschreiben damit es (hoffentlich) jeder versteht.

Aber ja, soviel zum Background. Das spielt alles für BB keine Rolle, da das tatsächlich nur eine von IDEal angebotene Bequemlichkeit ist, die sofort umgesetzt wird, ohne dass der Compiler jemals damit in Berührung kommt.

Ich persönlich verwende das auch gern, um alle anderen Additionen zu machen. Man braucht nämlich nur variable++ eintippen und dann einmal auf die Rückschritttaste klopfen und kann zB auch a=a+2 sehr schnell damit eingeben Wink (Und für die ganz pingeligen Schlaumeier: Tipparbeit erspart man sich natürlich nur bei langen Variablennamen / Arrays / Types, eh klar.)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

maximilian

BeitragSo, Jan 02, 2011 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Boah, das ist ja nicht auszuhalten. Ich grabe jetzt nochmal extra diesen Thread aus, weil mich die freche Art von Xaymar ziemlich aufregt.

Xaymar hat Folgendes geschrieben:
Zitat:
a++ ist in C++ NICHT das gleiche wie a=a+1.

Doch. Den overload vom operator++ in GNU-C++ kannst du dir ja ansehen, ist ja direkt in MinGW/GNUGCC drin.
Zitat:
Wie der Compiler das nun genau macht ist völlig egal, dafür gibt es keine Regeln.

wieder falsch, C++ 97 Standard usw. Sogar MSVC++ ist auf einen Standard festgelegt.

und (a=a+1)-1 ist volliger quatsch. Da meckert der compiler nämlich daran: Code: [AUSKLAPPEN]
error: expected ')' before '=' token

Und passieren würde auch nichts, da du von einer Gleichung 1 abziehst. Richtig wäre hier beim auruf func(a++):
Code: [AUSKLAPPEN]
func(a);
a++;
//oder direkt der overload operator++
a=a+1;


furbolg hat hier schon recht. Man kann den operator zwar überladen, standardmäßig ists a=a+1, in beiden varianten.

So und nu BTT!


Wenn du bei einem "(a=a-1)+1" einen Fehler beim Parsen kriegst hast du einen nicht konformen Compiler. Jeder C/C++-Compiler müsste das problemlos schlucken, und GCC tuts natürlich (gerade eben getestet). Und selbstverständlich passiert da was.

Dass C und C++ ISO-standardisiert sind will hier niemand bezweifeln, trotzdem ist egal wie dieser Standard implementiert wird, so lange die Semantik stimmt. Und a++ durch (a=a+1)-1 zu ersetzen wäre eine völlig standardkonforme Implementierung dieses Operators.

Um nochmal klarzustellen:

a++ ist das gleiche wie (a=a+1)-1 (Veränderung kommt erst im späteren Programmverlauf zur Geltung)
++a ist das gleiche wie a=a+1 (Veränderung ist unmittelbar)

Hier noch ein Beispiel:
Code: [AUSKLAPPEN]

int a = 0;
printf("%d\n", a++)
printf("%d\n", a);


Ausgabe: 0 1

Code: [AUSKLAPPEN]

int a = 0;
printf("%d\n", ++a)
printf("%d\n", a);


Ausgabe: 1 1
Variety is the spice of life. One day ignore people, next day annoy them.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group