予約語と完全に一致する。関数名と完全に一致する。内容を出力するには、関数と同様にその名前を書きます。str}上は単純な例で、変数strに文字列を格納し、そのまま出力しています。値が代入されていない変数は、空の文字列を出力します。~「何も出力しない」ではないことに注意してください。World"もしくは空の文字列を1/2の確率で出力することになります。変数はスコープ(有効範囲)の違いによって2種類存在します。グローバル変数すべての関数で共通に使用できる変数。}内、およびそれより深い入れ子階層のみで使用できる変数。}を抜けるところまで。両者を区別するのは変数の名前です。変数名の先頭がアンダースコア("_")の変数は、ローカル変数として扱われます。「必要な範囲だけで有効な変数」であるローカル変数をうまく利用することで、プログラムの見通しが良くなります。使っていますが、それらはまったく別物として扱われます。お互いの値を破壊することはありません。関数の引数を扱う変数_argcと_argvも実はローカル変数であることに気付かれたかと思います。ローカル変数になっているわけです。}内、およびそれより深い入れ子階層のみで使用できる変数」であることには注意してください。_str}このプログラムは期待通りには動作しません。}内のみで有効ですから、出力を取り出そうとしている位置では消えてしまっています。したがって、この関数requestは空の文字列を出力します。グローバル変数とローカル変数の違いはもうひとつあります。}から外れると消えてしまいます。対してグローバル変数はどこでも使用可能、さらにunloadでその値はファイルへ自動的に保存され、loadで復元されるようになっています。グローバル変数の内容は、(特殊な操作によって意図的に消去しない限りは)永遠に保持されるのです。演算の順序は演算子毎に重み付けされた演算優先度に基づいて決定されます。)で囲まれた部分は最優先で演算されます。演算子の種類と演算優先度は以下の通りです。低いコロン(":")付きの代入演算子は過去互換性を保持するために残されているもので、機能的にはコロン無しのものと同等です。)については次項で詳説します。]については配列の項で詳説しています。フィードバック演算子&については別項で詳説しています。_in_と!_in_は文字列の包含チェックに使用する演算子です。"World"}_in_は左辺の文字列が右辺の文字列に含まれていれば1、含まれていなければ0を返します。!_in_はその逆です。上の関数fooは1を返します。比較演算子は結果が真であれば整数1を、偽であれば0を返します。これらの演算子は文字列に対しても正しく機能します。値の大小は辞書順比較で決定されます。論理の真偽は以下で判断されます。上記以外のすべて代入でない演算は結果がそのまま出力となります。(3+2)*4}この関数fooは20を出力します。同じ優先度の演算子が連続している場合は、常に左から結合されます。1+2-3たとえば上の式は1+23-3の順に計算されます。10これはどうなるでしょう。C言語では代入演算子は右から結合されますから、iとjには10が代入されます。文では結合は常に左からです。10の順に計算されます。したがって、iには10は入らないのです。10が入るようになります。演算対象の項の型が一致していない場合、結果の型は以下のようになります。結果は実数となります。数値は文字列に変換された後、もう一方の文字列に結合されます。整数/実数と文字列の演算(加算以外)演算不能ですがエラーとはなりません。結果は空の文字列となります。ひとつの演算式内で型が混在していても構いません。必要に応じて、上記の法則により型変換が起こります。"最初に10+2が整数として計算され、結果12が得られます。残りはすべて文字列との加算ですから、12は文字列に変換され、文字列として結合されます。)で囲んだ部分は演算順序が最優先扱いになります。いくつでも重ねて指定可能で、深くなるほど優先度が上がります。平たく言えば「かっこで囲んだところを先に計算する」ということです。数式の書き方によってはなかなかややこしいこともあります。以下の例を見てください。10))文の演算則をよく理解している人でないと、answerに何が代入されるかを正確に答えることは出来ないでしょう。answerには文字列の"10"が入ります。整数50ではありません。最初に計算されるのはどこでしょう。