PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Typen von Variablen?



YaNnIk
22.01.2010, 20:12
Hi Leute..

Ich habe mal eine Frage zu den Typen der Variablen..

Also ein Bit kann 0-1 sein
Ein Byte 0-256
Ein Integer -32767 - +32768


Wie sieht es mit Long, Word und String aus???


Ich brauche nämlich eine Variable die mindestens bis 3686400 zählen kann ^^

Mfg Yannik

for_ro
22.01.2010, 20:19
Ein Byte 0-256
Ein Integer -32767 - +32768

Nicht ganz.
Byte 0 - 255
Integer -32768 - +32767
Word 0 - 65535
Long -2147483648 - +2147483647
String laut Help bis 254 Zeichen, geht aber auch länger, evtl. bis 65534

Steht übrigens alles in der Help unter "BASCOM Language Fundamentals" und da noch mal unter "Language Fundamentals".

YaNnIk
22.01.2010, 20:28
Also wenn ich eingebe

Dim X As String * 3

Dann kann ich von 0 bis 16.777.216 zählen oder??

peterfido
22.01.2010, 20:49
Dim X as long, wenn X gezählt werden soll.

YaNnIk
22.01.2010, 20:51
Könntet ihr mit trotzdem beantwortet ob das mit dem String richtig ist? Weil ein String * 3 würde ja weniger Speicherplatz verbrauchen als ein Long..

for_ro
22.01.2010, 20:54
Theoretisch könntest du in einem 3 Zeichen langen String 256*256*256 = 16.777.216 verschiedene Werte unterbringen. Aber mit Zählen hat das nicht wirklich was zu tun.
Dein 3-Zeichen benötigt übrigens ebenfalls 4 Byte, da BASCOM automatisch ein 0-Byte am Ende reserviert.

YaNnIk
22.01.2010, 22:51
Wie, also wenn ich einen String habe kann ich den nicht als einzelne Zahl verwenden???? Wie soll ich den sonst mit so großen Zahlen rechnen????????

for_ro
22.01.2010, 23:53
Wie peterfido schon geschrieben hat, kannst du für große ganze Zahlen den Long-Typ nehmen.
Noch größere Zahlen gehen nur mit Fließkomma, also
Single 1.5 x 10^–45 bis 3.4 x 10^38
Double 5.0 x 10^–324 to 1.7 x 10^308
Steht aber auch alles in der Hilfe.

Ein String ist eine Zeichenfolge, also z.B. "abc", aber auch "123456789012345678901234567890".
Nur kannst du mit denen nicht rechnen.

YaNnIk
23.01.2010, 09:42
Okay, danke..
Nach welchem Wert muss ich eigentlich im Datenblatt oder sonstwo suchen um herauszufinden, wie viel Bytes im jeweiligen AVR gespeichert werden können??

Ich habe nämlich die Befürchtung, dass der Atmega8 keine 2 Single und 2 Word speichern kann ^^ Das sind ja zusammen 36Byte ^^

for_ro
23.01.2010, 10:01
Hallo YaNnIk


Nach welchem Wert muss ich eigentlich im Datenblatt oder sonstwo suchen um herauszufinden, wie viel Bytes im jeweiligen AVR gespeichert werden können??
Ich will bestimmt niemanden davon abhalten, im Datenblatt des µCs zu lesen. Aber da BASCOM einen Teil des SRAM für sich benötigt, ist es einfacher, den entsprechenden Chip unter Options->Compiler->Chip einzustellen. Dann werden dir die aktuellen Werte angezeigt.
Flash: Programmspeicher + $data-Block
SRAM: Variablenspeicher + Stacks
EEPROM: Nicht-flüchtiger Variablenspeicher mit beschränkten Schreibzyklen.


Ich habe nämlich die Befürchtung, dass der Atmega8 keine 2 Single und 2 Word speichern kann ^^ Das sind ja zusammen 36Byte ^^
Du kannst im ATMega8 1024 Byte im SRAM ablegen, das reicht schon für einiges.

Jaecko
23.01.2010, 13:50
Für die jeweiligen Speicherwerte muss man eigentlich nicht mal im Datenblatt blättern; steht jeweils auf der Titelseite.

Was manchmal bei Bascom zu Verwirrung/Problemen führt sind die Werte Softstack, HWStack, Framesize. Sind die zu klein, kommts von Zeit zu zeit zu seltsamen Effekten, wo man sich dann schon mal nen Wolf sucht.