Die Syntax für Gleitkommawerte ist strenger als die in C. Werte wie ".5" und "6." sind in C akzeptabel,
l
aber im Pawn muss man "0.5" und "6.0" schreiben. In C ist der Dezimalpunkt optional, wenn ein
Exponent enthalten ist, so kann man in C "2E8" schreiben; Pawn akzeptiert den Großbuchstaben "E"
nicht. Verwenden Sie den Kleinbuchstaben "e". Es erfordert das Komma: z.B. "2.0e8" (siehe
"Numerische Konstanten" auf Seite 231).
Pawn unterstützt keine "Zeiger". Für die Übergabe von Funktionsparametern als Referenz bietet
l
Pawn ein "Referenz"-Argument (siehe "Funktionsargumente ("call-by-value" versus "call-by-
reference")" auf Seite 246). Das "Platzhalter"-Argument ersetzt einige Verwendungen des NULL-
Zeigers (siehe "Standardwerte von Funktionsargumenten" auf Seite 248).
Zahlen können mit Hexadezimal-, Dezimal-, oder Binärbasis angegeben werden. Die Oktale Basis
l
wird nicht unterstützt (siehe "Numerische Konstanten" auf Seite 231). Hexadezimale Zahlen müssen
mit "0x" ("x" in Kleinbuchstaben) beginnen. Das Präfix "0X" ist ungültig.
"Cases" in einem "switch"-Statement sind nicht "durchfallend". Es muss dem "case"-Label zumindest
l
eine Anweisung folgen. Um mehrere Anweisungen auszuführen, müssen Sie ein zusammengesetztes
Statement (mit {}) erstellen (siehe "switch ( Ausdruck ) { case Liste }" auf Seite 244). In C/C++ ist die
"switch"-Anweisung ein "bedingtes goto". In Pawn ist die "switch"-Anweisung ein strukturiertes "if".
Eine "break"-Anweisung beendet nur Schleifen. In C/C++ beendet die "break"-Anweisung auch ein
l
"case" in einer "switch"-Anweisung.
Pawn unterstützt "array Zuweisungen", mit der Limitation, dass beide Arrays die gleiche Länge haben
l
müssen. Zum Beispiel, wenn "a" und "b" Arrays mit 6 Zeilen sind, dann ist der Ausdruck "a=b" gültig.
Neben Zeichenketten, unterstützt Pawn auch literale Arrays und somit Ausdrücke wie "a =
{0,1,2,3,4,5}", wobei "a" eine Array Variable mit 6 Elementen ist.
"defined" ist ein Operator und keine Präprozessor-Direktive. Der "defined" Operator in Pawn arbeitet
l
mit Konstanten (deklariert mit "const"), globalen Variablen, lokalen Variablen und Funktionen.
Der "sizeof"-Operator gibt die Größe von Variablen in "Elementen" zurück und nicht in "Bytes". Ein
l
Element ist ein Eintrag oder ein Sub-Array. Weitere Details finden Sie im Kapitel "Sonstiges" auf Seite
238.
Eine leere Anweisung ist ein leerer Block (mit {}), nicht ein Semikolon (siehe "Zusammengesetzte
l
Anweisungen" auf Seite 240). Diese Änderung verhindert häufige Fehler.
Eine Division erfolgt in der Weise, dass der Rest der Division das gleiche Vorzeichen hat (oder hätte)
l
wie der Nenner. Bei der Division (Operator "/") erfolgt die Rundung immer zum kleineren ganzzahligen
Wert (wobei -2 kleiner ist als -1). D.h. 5/2=2 (2,5 wird zu 2 abgerundet), -5/2=-3 (-2,5 wird zu -3
abgerundet). Der "%"-Operator ergibt immer ein positives Ergebnis unabhängig vom Vorzeichen des
Zählers (siehe "Operatoren und Ausdrücke" auf Seite 235).
Es gibt keinen unären Operator "+", da dieser sowieso ein "no-operation"-Operator ist ("a = +1" ist
l
nicht gültig; korrekt: "a = 1").
Drei der bitweisen Operatoren haben andere Prioritäten als in C. Die Prioritätsstufe des "&", "^" und "|"
l
Operators ist höher als die relationalen Operatoren. Dennis Ritchie erklärte, dass diese Operatoren in
C ihre niedrigen Prioritätsstufen bekamen, weil frühe C-Compiler noch nicht über die logischen
Operatoren "&&" und "| |" verfügten, so dass stattdessen bitweise "&" und "|" verwendet wurden.
Das Schlüsselwort "const" in Pawn implementiert die "enum" Funktionalität von C.
l
250
Rev. 01