## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > expr

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    expr — 式の評価 Evaluate an expression
  構文 SYNOPSIS
  説明 DESCRIPTION
  被演算子 OPERANDS
    A numeric value
    論理値 A boolean value
    変数 A variable
    二重引用符に囲まれた文字列 A string enclosed in double-quotes
    波括弧に包まれた文字列｡ A string enclosed in braces.
    角括弧に包まれたTcl命令 A Tcl command enclosed in brackets
    函数呼出し A function call.
  演算子 OPERATORS
    - + ~ !
    **
    * / %
    + -
    << >>
    < > <= >=
    lt gt le ge
    == !=
    eq ne
    in ni
    &
    ^
    |
    &&
    ||
    x ? y : z
  MATH FUNCTIONS
  型､桁溢れ､精度 TYPES, OVERFLOW, AND PRECISION
  出来栄えの考慮 PERFORMANCE CONSIDERATIONS
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS
  COPYRIGHT

### NAME

expr — 式の評価 Evaluate an expression

### 構文 SYNOPSIS

expr arg ?arg arg ...?

### 説明 DESCRIPTION

空白で区切って引数 arg を数式に連結し､その数式を評価して､その値を返す｡演算子は､ C 言語数式内で許容されている演算子の部分群を含むことを許容される｡Tcl とC言語の両方共通の演算子は､ Tcl では､対応する C 言語の演算子と､同じ意味と優先順位を適用している｡数式の値はしばしば､整数と浮動小数値の両方の数値結果になるが､非数値の値にもなる｡譬えば次の数式は､ Concatenates args, separated by a space, into an expression, and evaluates that expression, returning its value. The operators permitted in an expression include a subset of the operators permitted in C expressions. For those operators common to both Tcl and C, Tcl applies the same meaning and precedence as the corresponding C operators. The value of an expression is often a numeric result, either an integer or a floating-point value, but may also be a non-numeric value. For example, the expression

    expr 8.2 + 6

評価して 14.2になる｡数式はC言語の式とは､被演算子が指定される方法で異なっている｡式は非数値の比較や､C言語には見られない幾つかの追加の演算子も運用している｡ 　　 evaluates to 14.2. Expressions differ from C expressions in the way that operands are specified. Expressions also support non-numeric operands, string comparisons, and some additional operators not found in C.

式の結果が整数の時､それは十進数形式であり､結果が浮動小数の時､それは､ formatの%g書式指定子によって作成される式になる｡ When the result of expression is an integer, it is in decimal form, and when the result is a floating-point number, it is in the form produced by the %g format specifier of format.

二重引用符や波括弧の内側を除き､何処の位置でも､#は､註釈の始まりであり､それは､行末か､式の末尾か､孰れか先に来た方の箇所迄､続く｡ At any point in the expression except within double quotes or braces, # is the beginning of a comment, which lasts to the end of the line or the end of the expression, whichever comes first.

#### 被演算子 OPERANDS

式は被演算子と､演算子と､括弧と､小数点と､からなり､これらのどれかの要素の間に空白が有るかもしれないが､無視される｡それぞれの被演算子は､もし可能なら､数値として解釈される｡ An expression consists of a combination of operands, operators, parentheses and commas, possibly with whitespace between any of these elements, which is ignored. Each operand is as a numeric value if at all possible.

各被演算子は次の形式の孰れかを有す: Each operand has one of the following forms:

A numeric value

    整数又は浮動小数｡整数の最初の二文字は十進数に於ては0d､二進数に於いては0b､八進数に於ては0o､十六進数に於ては0xであり得る｡ Either integer or floating-point. The first two characters of an integer may also be 0d for decimal, 0b for binary, 0o for octal or 0x for hexadecimal.

    浮動小数は､ 幾つかの共通書式のとどれかを採り得る､又､小数点.と､指数表記の為のeかEと､符号+か-と､を使うかもしれない｡[訳註:+ and - --> +or-] 次のものは全て有効な浮動小数点数である: 2.1, 3., 6e4, 7.91e+16 ｡ 文字列InfとNaNは､あらゆる場合の組合せで､浮動小数として認識される｡数として解釈されない被演算子は波括弧か二重引用符で囲まれる必要がある｡ A floating-point number may be take any of several common decimal formats, and may use the decimal point ., e or E for scientific notation, and the sign characters + and -. The following are all valid floating-point numbers: 2.1, 3., 6e4, 7.91e+16. The strings Inf and NaN, in any combination of case, are also recognized as floating point values. An operand that doesn't have a numeric interpretation must be quoted with either braces or with double quotes.

    どの数的値の内の数字も､一つ或はそれ以上の下線文字"_"で分離され得る｡分離符は､数字の間にのみ現れ､数字の開始位置や､先行する0とか基数指定子の間や､数値の末尾には現れない｡以下は､幾つかの用例である: 　 Digits in any numeric value may be separated with one or more underscore characters, "_". A separator may only appear between digits, not appear at the start of a numeric value, between the leading 0 and radix specifier, or at the end of a numeric value. Here are some examples:

        expr 100_000_000		100000000
        expr 0xffff_ffff		4294967295
        format 0x%x 0b1111_1110_1101_1011		0xfedb
        expr 3_141_592_653_589e-1_2		3.141592653589

  論理値 A boolean value
    string is boolean によって理解される形式を使う｡ Using any form understood by string is boolean.

  変数 A variable
    標準の$表記法を使う｡変数の値は被演算子の値である｡ Using standard $ notation. The value of the variable is the value of the operand.

  二重引用符に囲まれた文字列 A string enclosed in double-quotes
    逆斜線と､値と､命令置換は､Tclの為の規則に従って遂行される｡ Backslash, variable, and command substitution are performed according to the rules for Tcl.

  波括弧に包まれた文字列｡ A string enclosed in braces.
    被演算子は､波括弧内のTclの為の規則に従って､波括弧の値､として扱われる｡ The operand is treated as a braced value according to the rule for braces in Tcl.

  角括弧に包まれたTcl命令 A Tcl command enclosed in brackets
    命令置換は､Tclの為の命令置換規則に従って遂行される｡ Command substitution is performed as according to the command substitution rule for Tcl.

  函数呼出し A function call.
    これは､その引数が､被演算子として､上述の孰れかの形式を有するsin($x)の様な､数学的函数である｡数学的函数が如何に取り扱われるかに就いては後述のMATH FUNCTIONS項を参照されたい｡ This is mathematical function such as sin($x), whose arguments have any of the above forms for operands. See MATH FUNCTIONS below for a discussion of how mathematical functions are handled.

expr は､既に Tcl によって解析され置換された値を解析し置換を遂行するので､普通には Tcl による最初の回の置換を避ける為に式を波括弧の中に包むことが最善である｡　　 Because expr parses and performs substitutions on values that have already been parsed and substituted by Tcl, it is usually best to enclose expressions in braces to avoid the first round of substitutions by Tcl.

下記のものは､単純な幾つかの式の例である､ここで a の値は3､ b の値は6である｡それぞれの行の左側の命令は右側の値を生成する｡ 　　 Below are some examples of simple expressions where the value of a is 3 and the value of b is 6. The command on the left side of each line produces the value on the right side.

    expr {3.1 + $a}	6.1
    expr {2 + "$a.$b"}	5.6
    expr {4*[llength {6 2}]}	8
    expr {{word one} < "word $a"}	0

#### 演算子 OPERATORS

数値様式と文字列様式の両方を有する演算子では､全ての被演算子が数的解釈を選択する時に数値様式が選ばれる｡被演算子の整数的解釈は浮動小数解釈より優先される｡任意の値への文字列演算を確実にするには､ == の様な万能の演算子の代わりに eq や ne や string 命令を使うことは一般に好い着想である｡　　 For operators having both a numeric mode and a string mode, the numeric mode is chosen when all operands have a numeric interpretation. The integer interpretation of an operand is preferred over the floating-point interpretation. To ensure string operations on arbitrary values it is generally a good idea to use eq, ne, or the string command instead of more versatile operators such as ==.

他に指定がない限り､演算子は非数の被演算子を受入れる｡論理演算の値は､真値なら 1 ､それ以外は 0 である｡string is 論理値 を参照されたい｡適正な演算子は､以下に列挙する､優先順位毎にまとめ､順位が逓減する順に並べた､大多数のものは tcl::mathop 名前空間内の命令としても利用できる(mathop(n) 参照のこと)｡　　　 Unless otherwise specified, operators accept non-numeric operands. The value of a boolean operation is 1 if true, 0 otherwise. See also string is boolean. The valid operators, most of which are also available as commands in the tcl::mathop namespace (see mathop(n)), are listed below, grouped in decreasing order of precedence:

- + ~ !
  負の単項演算子､正の単項演算子､ビット演算のNOT､論理演算のNOT｡ これらの演算子は数の被演算子のみに適用できる､又､ビット演算のNOT は整数にのみ適用できる｡　　 Unary minus, unary plus, bit-wise NOT, logical NOT. These operators may only be applied to numeric operands, and bit-wise NOT may only be applied to integers.

**
  冪乗｡数値の被演算子に有効である｡ 　　 Exponentiation. Valid for numeric operands. The maximum exponent value that Tcl can handle if the first number is an integer > 1 is 268435455.

* / %
  乗算と､除算は数値の被演算子に有効であり､残りのものは整数に有効である｡剰余は､除数の絶対値より小さい絶対値で､除数と同じ符号を有する｡　　　 Multiply and divide, which are valid for numeric operands, and remainder, which is valid for integers. The remainder, an absolute value smaller than the absolute value of the divisor, has the same sign as the divisor.

  整数に適用した時､除算と剰余は､それぞれが除数の寸法であって､隣り合い､重り合わない断片の並びへの､数直線の分割操作であると看做せる; 商は被除数がその中に置く断片を識別している､又､残差は､被除数がその中に置いている断片の位置を識別している｡その結果として､ “-57 / 10” の結果は-6であり､ “-57 % 10” は3 になる｡ When applied to integers, division and remainder can be considered to partition the number line into a sequence of adjacent non-overlapping pieces, where each piece is the size of the divisor; the quotient identifies which piece the dividend lies within, and the remainder identifies where within that piece the dividend lies. A consequence of this is that the result of “-57 / 10” is always -6, and the result of “-57 % 10” is always 3.

+ -
  加算と減算｡数値の被演算子に有効である｡　　 Add and subtract. Valid for numeric operands.

<< >>
  左シフトと右シフト｡整数の被演算子に有効である｡右シフトは常に符号ビットを増殖しながら移動する｡　　 Left and right shift. Valid for integers. A right shift always propagates the sign bit.

< > <= >=
  数値優先の論理比較： より小 と､より大 と､より小さいか等しい と､より大か等しい｡もし何れかの引数が数値ではない場合､比較はユニコード文字列比較を使って比較される､下の文字列比較演算子に従う､これは同じ優先順位になる｡ Boolean numeric-preferring comparisons: less than, greater than, less than or equal, and greater than or equal. If either argument is not numeric, the comparison is done using UNICODE string comparison, as with the string comparison operators below, which have the same precedence.

lt gt le ge
  論理文字列比較： より小 と､より大 と､より小さいか等しい と､より大か等しい｡これらは常に､そのユニコード文字列を使って値を比較する(string compare を参照されたい)､上述の､数値比較と異なっており､これは同じ優先順位になる｡ Boolean string comparisons: less than, greater than, less than or equal, and greater than or equal. These always compare values using their UNICODE strings (also see string compare), unlike with the numeric-preferring comparisons above, which have the same precedence.

== !=
  論理同値　非同値｡　　 Boolean equal and not equal.

eq ne
  論理的文字列同値､文字列非同値｡　　　 Boolean string equal and string not equal.

in ni
  包含リスト､非包含リスト｡第１引数は文字列､第２引数はTcl型リストとして解釈される｡ in はリスト内の構成員として試験する､ ni は正反対である｡　　　 List containment and negated list containment. The first argument is interpreted as a string, the second as a list. in tests for membership in the list, and ni is the inverse.

&
  ビット演算の論理積｡整数の被演算子に対して有効である｡ 　　 　　 Bit-wise AND. Valid for integer operands.

^
  ビット演算の排他論理和｡整数の被演算子に対して有効である Bit-wise exclusive OR. Valid for integer operands.

|
  ビット演算の論理和｡整数の被演算子に対して有効である｡ 　　 Bit-wise OR. Valid for integer operands.

&&
  論理積｡もし､両方の被演算子が論理真値の場合結果は 1 ､それ以外は 0 になる｡この演算子は遅延評価する； その結果を定めなければならない場合にのみ第二番目の被演算子を評価する｡ Logical AND. If both operands are true, the result is 1, or 0 otherwise. This operator evaluates lazily; it only evaluates its second operand if it must in order to determine its result. This operator evaluates lazily; it only evaluates its second operand if it must in order to determine its result.

||
  論理和｡もし､両方の被演算子が論理偽値の場合結果は 0 ､それ以外は 1 になる｡この演算子は遅延評価する； その結果を定めなければならない場合にのみ第二番目の被演算子を評価する｡ Logical OR. If both operands are false, the result is 0, or 1 otherwise. This operator evaluates lazily; it only evaluates its second operand if it must in order to determine its result.

x ? y : z
  C言語の三項演算子｡もし x の評価結果が偽値なら､ 結果はyの値になる｡それ以外なら 結果は z の値がである｡この演算子は遅延実行する； y か z の内の一つのみを評価する｡ If-then-else, as in C. If x is false , the result is the value of y. Otherwise the result is the value of z. This operator evaluates lazily; it evaluates only one of y or z.

冪乗演算子は乗算と除算演算子が行うのと同じ方法で型を伝播する､又､結果は pow の結果と同じになる｡冪乗演算群は優先度水準内では右から左である｡他の二項演算子群では左から右である｡譬えば､次の値は　　　 The exponentiation operator promotes types in the same way that the multiply and divide operators do, and the result is is the same as the result of pow. Exponentiation groups right-to-left within a precedence level. Other binary operators group left-to-right. For example, the value of

    expr {4*2 < 7}

は0であり､次の値は､ is 0, while the value of

    expr {2**3**2}

は 512 である｡　　 is 512.

C言語と同じ様に､&& と､ || と､ ?: は “遅延評価”機能があり､それは結果を定める必要が無い場合はその被演算子は評価されないことを意味する｡譬えば､次の中では､ As in C, &&, ||, and ?: feature “lazy evaluation”, which means that operands are not evaluated if they are not needed to determine the outcome. For example, in

    expr {$v?[a]:[b]}

$vの値に従って､ “[a]” か “[b]”のどちらか片方だけが評価される｡これは､通常の Tcl 解析機能では正しくない､そこで､通常は､ expr の引数を波括弧内に括ることが推奨される｡ expr $v ? [a] : [b] の様に､波括弧なしでは､ expr が呼出される前に [a] と [b] 両方が評価される｡　　　　 only one of [a] or [b] is evaluated, depending on the value of $v. This is not true of the normal Tcl parser, so it is normally recommended to enclose the arguments to expr in braces. Without braces, as in expr $v ? [a] : [b] both [a] and [b] are evaluated before expr is even called.

それぞれの演算子に生成される結果の更なる詳細は､ C 言語に関する説明書を参照されたい｡　　　 For more details on the results produced by each operator, see the documentation for C.

#### MATH FUNCTIONS

sin($x) の様な数学的函数は tcl::mathfunc 名前空間内の通常のTcl関数への呼出しに置き換えられる｡このような式の評価は　　 　　　 A mathematical function such as sin($x) is replaced with a call to an ordinary Tcl command in the tcl::mathfunc namespace. The evaluation of an expression such as

    expr {sin($x+$y)}

これは次の評価と全ての課程が同じである　　　 is the same in every way as the evaluation of

    expr {[tcl::mathfunc::sin [expr {$x+$y}]]}

これは順番に次の評価と同じである　　　　 which in turn is the same as the evaluation of

    tcl::mathfunc::sin [expr {$x+$y}]

tcl::mathfunc::sin は namespace(n) 名前空間説明書内の NAMESPACE RESOLUTION 内に記述された様に決定される｡ namespace path の無為設定値を与えられ､ [namespace current]::tcl::mathfunc::sin か ::tcl::mathfunc::sin が典型的な決定結果である｡ tcl::mathfunc::sin is resolved as described in NAMESPACE RESOLUTION in the namespace(n) documentation. Given the default value of namespace path, [namespace current]::tcl::mathfunc::sin or ::tcl::mathfunc::sin are the typical resolutions.

C 言語の様に､数学的函数はコンマで区切られた複数の引数を受入れることがある｡そこで､　　　　 As in C, a mathematical function may accept multiple arguments separated by commas. Thus,

    expr {hypot($x,$y)}

は､次の様になる　　　 becomes

    tcl::mathfunc::hypot $x $y

無為設定で利用できる数学的函数については mathfunc(n) 説明を参照されたい｡ 　　　 See the mathfunc(n) documentation for the math functions that are available by default.

#### 型､桁溢れ､精度 TYPES, OVERFLOW, AND PRECISION

内部の浮動小数計算は倍精度 C 型を使用して遂行される｡文字列を浮動小数値に変換する時､冪の桁溢れが検出されると結果は適正に倍精度の Inf か -Inf になる｡浮動小数の(オーバー･フローとアンダー･フロー)桁溢れは一般に非常に信頼できるハードウェアによって運用された程度に検出される｡　　 Internal floating-point computations are performed using the double C type. When converting a string to floating-point value, exponent overflow is detected and results in the double value of Inf or -Inf as appropriate. Floating-point overflow and underflow are detected to the degree supported by the hardware, which is generally fairly reliable.

整数と､浮動少数と､文字列被演算子の為の内部表現の間の型変換は､必要な都度自動的に実行される｡数学的計算に関して､整数が､何か浮動少数が現れる迄使用され､その後は浮動少数が使用される｡譬えば､ 　　 Conversion among internal representations for integer, floating-point, and string operands is done automatically as needed. For arithmetic computations, integers are used until some floating-point number is introduced, after which floating-point values are used. For example,

    expr {5 / 4}

からは1が返り､そして 　　 returns 1, while

    expr {5 / 4.0}
    expr {5 / ( [string length "abcd"] + 0.0 )}

両者は 1.25 を返す｡浮動小数の結果は “.” か “e” のどちらかの存在により整数から区別することができる｡譬えば､　　　 both return 1.25. A floating-point result can be distinguished from an integer result by the presence of either “.” or “e”

    expr {20.0/5.0}

からは 4 ではなく 4.0 を返す｡　　　 returns 4.0, not 4.

### 出来栄えの考慮 PERFORMANCE CONSIDERATIONS

式が置換以外を遂行しようとする Tcl 構文を含む場合､式を波括弧内に括るか､さもなければ､それが静的値になる様引用することは､ Tcl コンパイラに､式の為のバイト符号を生成することを許容して､結果としてより良い速度とより小さい貯蔵要求になる｡これは､もし､expr が呼ばれる前に値の置換が遂行されることを Tcl が許容されることが生じるかもしれない問題点を回避する｡　　　 Where an expression contains syntax that Tcl would otherwise perform substitutions on, enclosing an expression in braces or otherwise quoting it so that it's a static value allows the Tcl compiler to generate bytecode for the expression, resulting in better speed and smaller storage requirements. This also avoids issues that can arise if Tcl is allowed to perform substitution on the value before expr is called.

次の例では､式の値は 11 である､理由は､ Tcl 解析が最初に $b を置換し､次に expr が $a を式 “$a + 2*4” を評価する際の部分として代入する置換するから｡ 式を波括弧内に括ることは構文不都合の結果になる､理由は $b は評価して数の値にならないから｡　　 In the following example, the value of the expression is 11 because the Tcl parser first substitutes $b and expr then substitutes $a as part of evaluating the expression “$a + 2*4”. Enclosing the expression in braces would result in a syntax error as $b does not evaluate to a numeric value.

    set a 3
    set b {$a + 2}
    expr $b*4

上述の様に実行時に式が生成されると､バイト符号コンパイラは式が評価される時毎に新しい符号命令を生成することを確立しなければならない｡これは､性能の観点から最も代償の多い類の式である｡このような場合､ expr の代りに mathfunc(n) か mathop(n) 内に記述された命令を直接使うことを考慮されたい｡ When an expression is generated at runtime, like the one above is, the bytecode compiler must ensure that new code is generated each time the expression is evaluated. This is the most costly kind of expression from a performance perspective. In such cases, consider directly using the commands described in the mathfunc(n) or mathop(n) documentation instead of expr.

大多数の式は､実行時に形成されないが､それは､文字列や他の置換を誘発しない様な置換を含む｡コンパイルの時に式を文字列として動作することをバイト符号コンパイラに許容する為に､置換を含まないか､波括弧内に括られているか､そうでなければ､代りに､ expr が式を遂行することを許容して置換を遂行することから Tcl を阻む為に引用されることを確実に実行されたい｡　　　 Most expressions are not formed at runtime, but are literal strings or contain substitutions that don't introduce other substitutions. To allow the bytecode compiler to work with an expression as a string literal at compilation time, ensure that it contains no substitutions or that it is enclosed in braces or otherwise quoted to prevent Tcl from performing substitutions, allowing expr to perform them instead.

それ以外は恒常な式の広い文脈の内部に､非恒常な文字式を入れ込むことが必要な場合､最も効果的な技巧は変動部位を､少なくとも外側部位の機械語翻訳が可能な様に､再帰的な expr の内部に入れることである､但し､それは､変動部位はそれ自身分離した式として評価できなければならないことを意味する｡ 斯くて､この実施例内の結果は 20 であり､外側の式は､完全に､高速域に記憶されたバイト翻訳機能の恩恵を得ている｡ If it is necessary to include a non-constant expression string within the wider context of an otherwise-constant expression, the most efficient technique is to put the varying part inside a recursive expr, as this at least allows for the compilation of the outer part, though it does mean that the varying part must itself be evaluated as a separate expression. Thus, in this example the result is 20 and the outer expression benefits from fully cached bytecode compilation.

    set a 3
    set b {$a + 2}
    expr {[expr $b] * 4}

一般には､何時であれ可能な場合は､使用者は数式を波括弧で括るべきであり､できない場合は､expr への引数は､どこか余所で､可能な限り単純に定義された数式にすべき｡通常は､複雑な数式を生成するよりも､他の技術(譬えば､tcl::mathop 名前空間内の命令)を使うほうが効果的で安全である｡ In general, you should enclose your expression in braces wherever possible, and where not possible, the argument to expr should be an expression defined elsewhere as simply as possible. It is usually more efficient and safer to use other techniques (e.g., the commands in the tcl::mathop namespace) than it is to do complex expression generation.

### 用例 EXAMPLES

数値比較､その結果は1： A numeric comparison whose result is 1:

    expr {"0x03" > "2"}

文字比較､その結果は 1 ： A string comparison whose result is 1:

    expr {"0y" > "0x12"}

強制された文字列比較､その結果は 0 ： A forced string comparison whose result is 0:

    expr {"0x03" gt "2"}

“興味深い” 数学的函数を計算する手続函数を定義する: Define a procedure that computes an “interesting” mathematical function:

    proc tcl::mathfunc::calc {x y} {
        expr { ($x**2 - $y**2) / exp($x**2 + $y**2) }
    }

極座標をデカルト座標に変換する: Convert polar coordinates into cartesian coordinates:

    # convert from ($radius,$angle)
    set x [expr { $radius * cos($angle) }]
    set y [expr { $radius * sin($angle) }]

デカルト座標を極座標に変換する: Convert cartesian coordinates into polar coordinates:

    # convert from ($x,$y)
    set radius [expr { hypot($y, $x) }]
    set angle  [expr { atan2($y, $x) }]

二つの文字列の値の相互の関係を記述する内容を印刷する: Print a message describing the relationship of two string values to each other:

    puts "a and b are [expr {$a eq $b ? {equal} : {different}}]"

環境変数が充分に定義され､且つ論理的真値の値が設定されているかの変数を設定する: 　　　 Set a variable indicating whether an environment variable is defined and has value of true:

    set isTrue [expr {
        # 環境変数が存在すか､又...
        # Does the environment variable exist, and...
        [info exists ::env(SOME_ENV_VAR)] &&
        # ...適正な真値を含むか?
        # ...does it contain a proper true value?
        [string is true -strict $::env(SOME_ENV_VAR)]
    }]

0～99 の両端を含む範囲の整数の乱数を発生する: Generate a random integer in the range 0..99 inclusive:

    set randNum [expr { int(100 * rand()) }]

### SEE ALSO

array, for, if, mathfunc, mathop, namespace, proc, string, Tcl, while

### KEYWORDS

arithmetic, boolean, compare, expression, fuzzy comparison, integer value

### COPYRIGHT

Copyright © 1993 The Regents of the University of California.
Copyright © 1994-2000 Sun Microsystems Incorporated.
Copyright © 2005 Kevin B. Kenny <kennykb@acm.org>. All rights reserved.
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-2000 Sun Microsystems, Inc.
Copyright © 2005 Kevin B. Kenny <kennykb(at)acm.org>. All rights reserved