定数
10進定数
10進定数は32ビット符号付き整数です。直前に負の符号 - を置くことにより負の数を指定することもできます。
例. 32 -2 32900
16進定数
16進定数は頭に 0x または $ を付けて記述します。 16進定数は32ビット符号付き整数です。ただし、指定された数値が32ビット分(8桁分)ない時、上位部分は 0
で詰められます。従って、0xffff と記述した場合、これは 0x0000ffff
と記述したのと同じになります。0xffffffff(10進で-1)とはならないので注意してください。
例. 0x0d0a $7f 0xffff
文字定数
文字定数は1文字を半角のシングルクオーツ ' で囲って記述します。 文字定数は32ビット符号付き正数です。ただし、半角文字の場合は最下位の8ビットに文字コードが入り、残り上位24ビットが 0
になります。全角文字の場合は1バイト目のコードが中下位の8ビットに入り、2バイト目のコードが最下位の8ビットに入り、そして中上位8ビットと最上位8ビットが 0
になります。
例. 'A' '漢'
文字定数では以下のメタ文字を指定することもできます。 '\n'
改行文字(0x00000d0a) '\t' タブ文字(0x00000009) '\x??'
任意コードの文字(0x000000??)(??は16進2桁の文字) '\\' 文字 \
(0x0000005c)
文字列定数
文字列定数は文字列を半角のダブルクオーツ " で囲って記述します。文字列定数は最大512バイト(半角512文字、全角256文字)まで可能です。
例. "メッセージ"
文字列定数では文字列中に以下のメタ文字を指定することができます。 \n 改行文字(0x0d,0x0a) \r
CRコード(0x0d) \t タブ文字(0x09) \x?? 任意コードの文字(0x??)(??は16進2桁の文字)
\x00 は文字列の終りと見なされるので注意
\\ 文字 \ (0x5c)
\" 文字 " (0x22)
文字列定数中のメタ文字
文字列定数はシステム関数の引数を指定するために使用しますが、文字列定数の引数がどのようなデータを表すかによって、上記のメタ文字が有効な場合と無効な場合があります。すなわち、文字列定数が指定されたシステム関数の種類と引数の位置によって、文字列定数中のメタ文字が有効な場合と無効な場合があります。文字列定数の引数が以下のようなデータを表すものである場合、文字列定数のメタ文字は無効になります。
・検索文字列/置換文字列
・ファイル名/パス名/ディレクトリ名
・child()関数の子プロセス・コマンド
・printf()/sprintf()関数の書式指定文字列
・strlist()関数の第2引数以降
このようなデータをシステム関数の引数に指定する際に、文字列定数中のメタ文字が無効になる理由は、文字列定数のメタ文字におけるプレフィックス
\ と、検索文字列/置換文字列/書式指定文字列のメタ文字におけるプレフィックス \ 、またはディレクトリの区切りを表す \
が、互いにぶつかってしまい、メタ文字の指定が複雑になってしまうことを避けるためです。 なお、文字列定数のメタ文字が無効な場合でも、メタ文字 \"
だけは常に有効です。このメタ文字だけはコンパイラが処理しており、その他のメタ文字は、インタプリタが各システム関数を実行する際に処理しています。
マクロ定数
マクロ定数はすべて半角の大文字で記述します。 マクロ定数は32ビット符号付き定数です。ただし、通常マクロ定数はビット論理演算に使用するため、符号付きか符号なしかはあまり関係ありません。 マクロ定数は、システム関数の引数に指定したり、システム変数の値を調べるのに使用します。マクロ定数の詳細については、各システム関数やシステム変数の所で説明しています。
例. DSTAT_UNDERLINE MAX_NUMBER
リンク
|