next up previous index
Következő: 15.8.8 MINTÁK ÉS TEVÉKENYSÉGEK Fel: 15.8.7 VÁLTOZÓK, REKORDOK ÉS Előző: 15.8.7.4 Tömbök   Index

15.8.7.5 Változótipizálás és konverzió

A változók és mezők lehetnek (lebegőpontos) számok, sztringek, vagy mindkettő. A változó értékének kezelése a környezetétől függ. Ha numerikus kifejezésben szerepel, számként lesz kezelve, ha sztringként használják, akkor sztringként. Ha kényszeríteni szeretnénk, hogy egy változó számként legyen kezelve, adjunk hozzá 0-t; ha azt akarjuk, hogy sztringként, konkatenáljuk az üres sztringgel. Ha egy sztringet számmá kell konvertálni, a konverzió az atof (3) függvénnyel valósul meg. Egy szám sztringgé konvertálódik, ha a CONVFMT értékét, mint az sprintf (3) függvényformázó sztringjét használjuk, argumentumként pedig a változó számértékét adjuk meg. Azonban, jóllehet az awk-ban minden szám lebegőpontos, az egész értékek mindig integer-szerűen konvertálódnak. Így CONVFMT = ,,%2.2f''
a=12
b=a,,''
a b változó sztringértéke ,,12'' és nem ,,12.00''.
A gawk a következőképpen hajtja végre az összehasonlítást: ha két változó numerikus, numerikusan hasonlít össze. Ha az egyik érték numerikus és a másik sztringérték, amely ,,numerikus sztring'', akkor az összehasonlítás szintén numerikusan történik. Egyébként a numerikus érték sztringgé konvertálódik és sztring-összehasonlítás hajtódik végre. Két sztring, természetesen sztringként hasonlítódik össze. A POSIX szabvány szerint, akkor is numerikus összehasonlítást kell végezni, ha két sztring numerikus sztring. Azonban ez teljesen helytelen, és a gawk nem ezt teszi. Fontos, hogy a sztring konstansok, úgy mint az ,,57'', nem numerikus sztringek; ezek sztring konstansok. A ,,numerikus sztring'' fogalom csak a mezőkre, a getline bemenetre, a FILENAME-re, az ARGV elemekre, az ENVIRON elemekre és a split() függvénnyel létrehozott tömb numerikus sztring elemeire vonatkozik. Az alapgondolat az, hogy a numerikus alakú felhasználói bemenetet, és csak a felhasználói bemenetet szabad így kezelni. Az inicializálatlan változók numerikus érteke 0, sztringértékük ,,'' (null-, vagy üres sztring).


next up previous index
Következő: 15.8.8 MINTÁK ÉS TEVÉKENYSÉGEK Fel: 15.8.7 VÁLTOZÓK, REKORDOK ÉS Előző: 15.8.7.4 Tömbök   Index

1999-09-17