GLBasic forum

Other languages => GLBasic - de => Topic started by: HeikoJ on 2007-Sep-07

Title: Strings und Zahlen
Post by: HeikoJ on 2007-Sep-07
Hallo,

mir ist gestern folgendes aufgefallen :

Global a$ = "5"

Print a$ * 32

Die Ausgabe ist :  532

Hat mich irgendwie verblüfft, den ich hatte 160 erwartet.

Habe ich da einen Denkfehler ??
Ist das richtig so ??

Gruß Heiko
Title: Strings und Zahlen
Post by: Kitty Hello on 2007-Sep-07
Naja, jein. Igentlich sollte man strings + Zahlen nicht addieren usw. Weil "5" + 5 nicht "10" gibt, sondern "55". Du pappst 2 Strings halt zusammen, was sollst Du sonst damit machen.
Bitte Zahlen immer als Zahlen, und sobald ein String dabei ist, Klammern setzten, weil der zusammenklebt:
"5"+5+5 = "555"
"5"+(5+5) = "510"
Title: Strings und Zahlen
Post by: HeikoJ on 2007-Sep-07
Hallo,

1. Ich habe ja nicht addiert, sondern multipliziert
2. die 32 steht ja nicht in Anfürhungszeichen

Der Compiler sollte doch eine solche Konstruktion anmeckern.

Eigentlich hatte ich im Programm folgenden Code:

Code (glbasic) Select
 ...
  str$  = INIGET$(section$,"Ausgang")
  SPLITSTR(str$, feld$[],",")

  IF str$ <> "NO_DATA"
      new_map.a_map$[0][0] = feld$[0] // x pos für Ausgang
      new_map.a_map$[0][1] = feld$[1] // y pos für Ausgang
      new_map.a_map$[0][2] = feld$[2] // Name der Map
      new_map.a_map$[0][3] = feld$[3] // x pos für Ausgang
      new_map.a_map$[0][4] = feld$[4] // x pos für Ausgang
  ....
  ....
  akt_posx = MAPS[map_nr].a_map$[0][3] * 32
Eigentlich hatte ich eben jetzt erwartet, das in akt_posx 160 steht, da ja die
Variable als Zahl definiert ist.
Aber es kam halt 935 als Zahl raus.

So ging es dann :

akt_posx = INTEGER(MAPS[map_nr].a_map$[0][3]) * 32


Gruß Heiko
Title: Strings und Zahlen
Post by: Kitty Hello on 2007-Sep-07
Ja, so gehts. Er wandelt eigentlich immer alles in Strings um, und dann kommt erst der Operator.