Expressions are constructed from operands and operators and can
then be evaluated. The most general expression evaluator in Tcl is the
expr
command:
expr arg ?arg arg ... arg?
which evaluates its arguments as an expression and returns the value of the evaluation.
A simple example expression is
expr 2 * 2
which when executed returns the value 4
.
There are different classes of operators: arithmetic, relational, logical, bitwise, and choice. Here are some example expressions involving various operators:
arithmetic  $x * 2

relational  $x > 2

logical  ($x == $y)  ($x == $z)

bitwise  8 & 2

choice  ($a == 1) ? $x : $y

Basically the operators follow the syntax and meaning of their ANSI C counterparts.
Expressions to the expr
command can be contained in curly brackets
in which case the usual substitutions are not done before the
expr
command is evaluated, but the command does its own round of
substitutions. So evaluating a script such as:
set a 1 expr { ($a==1) : "yes" ? "no" }
will evaluate to yes
.
Tcl also has a whole host of math functions that can be used in expressions. Their evaluation is again the same as that for their ANSI C counterparts. For example:
expr { 2*log($x) }
will return 2 times the natural log of the value of variable x
.