Tclの式がC言語の式と異なる点はオペランドの指定の方法にあります。Tclの式は数でないオペランドや文字列の比較をサポートしています。OPERANDSTclの式はオペランドと演算子と括弧により構成されます。空白は、オペランド,演算子,括弧の間に使うことができますが、実行時に無視されます。オペランドはできうる限り整数値として解釈されます。(オペランドの最初の文字が0である場合),16進(オペランドの最初2文字が0xである場合)で指定できます。オペランドが前述の整数フォーマットでない場合は、可能であれば浮動小数点数として扱われます。F,l,Lという接尾辞が殆ど使用できないということを除けば)が認めるフォーマットが全て使用できます。以下は有効な浮動小数点数です。2.1、3.、6e4、7.91e+16。数値として解釈ができない場合、オペランドは文字列としてみなされます(その場合は使用できる演算子は限定されます)。32ビットシステム上では、整数MAX_INT(0x7FFFFFFF)とMIN_INT(-0x80000000)は32ビット値として表示され、その範囲以外の整数値は(可能であれば)64ビット値として表示されます。オペランドは次の方法の何れかで指定することができます。[1]整数か浮動小数点のいずれかの数値とした場合。[2]標準の$表記法を使って、Tcl変数とした場合、変数の値はオペランドとして使われます。[3]二重引用符で囲まれた文字列とした場合。式を分析する際、引用符の間にある情報に対して、バックスラッシュ,変数,コマンドの置換を行い、その結果値をオペランドとして使います。}"で囲まれた文字列とした場合。左中括弧とマッチした右中括弧の間の文字は、置換なしでそのままオペランドとして使われます。]"で囲まれたTclコマンドとした場合。そのコマンドが実行した結果はオペランドとして使われます。[6]数学関数とした場合。引数には前述のフォーマットのオペランドも使用できます。定義された関数のリストは下記を参照してください。前述の、式の中に含まれている変数の置換やコマンド置換は、exprコマンドに備わっている機能です。式がexprコマンドに渡される前に、その式がコマンド解析によって先に置換されることに注意してください。コマンド解析によって式が置換されてしまうのを防止したい場合には、下記の例の様に式を中括弧で囲みます下記は簡単な式の例です。変数aの値が3、変数bの値が6であるとき、各行の左にある式を評価すると右の値になります。有効な演算子は下記のとおりです。優先度の高い順にグループ化しています。+~!単項演算子のマイナス・プラス・ビット演算子のNOT・論理演算子のNOT。これらはいずれも文字列に適用できません。ビット演算子のNOTは整数のみに適用されます。これらはいずれも文字列に適用されません。剰余は整数のみに適用されます。剰余は常に除数と同じ符号を持ち、その絶対値は除数より小さくなります。あればどのオペランドにも適用できます。>>左シフト・右シフト。右シフトは常に符号を保有します。>=比較演算子の小なり・大なり・以下・以上。真であれば1を、そうでなければ0を返します。これらの演算子は数値だけでなく文字列にも適用できますが、その場合は文字列比較となります。!=比較演算子のイコール・非イコール。それぞれ1か0を返します。全てのオペランドに有効です。ne比較演算子の文字列イコール・文字列非イコール。それぞれ1か0を返します。文字列のみに有効です。&ビット演算子のAND。^ビット演算子の排他的論理和(XOR)。|ビット演算子のOR。&&論理演算子のAND。オペランドが両方とも0でなければ1を、そうでなければ0を返します。数値のオペランド(整数また浮動小数点数)のみに有効です。||論理演算子のOR。オペランドが両方とも0であれば1を、そうでなければ0を返します。数値のオペランド(整数また浮動小数点数)のみに有効です。x?y:zC言語ライクなIf-then-else。xを評価した値が0でなければ、結果はyの値に、そうでなければzの値になります。xは数値でなければなりません。各演算子についての詳解は、C言語マニュアルを参照してください。同じ優先順位を持つ2項演算子の評価は「左から右」の順になります。演算子は、C言語と同様に「遅延評価」を行います。結果を決定するのに必要とされないオペランドは評価されません。[b]}において、$vの値に応じて、[a]または[b]のどちらか一方しか実際には評価されません。注意すべきは、「遅延評価」が適用されるのは、全体の式が中括弧に括られている場合だけです。ない場合は、exprコマンドを呼び出す前に、Tcl分析は[a]と[b]の両方を評価します。数学関数Tclは式において次の数学関数をサポートします。)argの絶対値を返します。Argは整数か浮動小数点のいずれかであり、その結果は同じフォーマットで返されます。pi]のラジアンにおけるargのアークコサイン(アーク余弦)を返します。]のラジアンにおけるargのアークサイン(アーク正弦)を返します。]のラジアンにおけるargのアークタンジェントを返します。アークタンジェントを返します。両方共に0でないもの。