Strings und Zahlen

Previous topic - Next topic

HeikoJ

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

Kitty Hello

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"

HeikoJ

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

Kitty Hello

Ja, so gehts. Er wandelt eigentlich immer alles in Strings um, und dann kommt erst der Operator.