Arithmetic (Learning the Korn Shell, 2nd Edition)
B.8. Arithmetic
Starting with ksh93m, the built-in arithmetic facility
understands a large percentage of the C language's expressions.
This makes the shell more attractive as a full-blown programming
language. The following features are available:
Trailing type suffixes
Integer constants can have a trailing U
or L suffix to indicate that they are
unsigned or long, respectively. While the lowercase versions
may also be used, this is not recommended, since it is easy
to confuse an l (letter ell) with a
1 (digit one).
C character constants
C single-quoted character constants are recognized.
As in C, they act like integer constants. For example:
$ typeset -i c
$ for ((c = 'a'; c <= 'z'; c++))
> do print $c
> done
97
98
99
100
...
Octal and hexadecimal constants
You can use the C format for octal (base 8) and hexadecimal
(base 16) constants. Octal constants start with a leading 0,
and hexadecimal constants start with a leading 0x
or 0X.
For example:
$ print $((010 + 1)) Octal 10 is decimal 8
9
$ print $((0x10 + 1)) Hexadecimal 10 is decimal 16
17
Unsigned integer arithmetic
By using typeset -ui, you can create
unsigned integers. Regular integers represent both positive
and negative numbers. Unsigned integers start at 0, go up
to some implementation-dependent value, and then "wrap"
around again to 0. Similarly, subtracting 1 from 0
wraps around the other way, yielding the largest unsigned number:
$ typeset -ui u=0
$ let u--
$ print $u
4294967295
C operators and precedence
ksh supports the full set of
C operators, with the same precedence and associativity.
The operators were presented in detail in
Chapter 6 and are summarized again
below.
Operator
Meaning
Associativity
++ --
Increment and decrement, prefix and postfix
Left to right
+ - ! ~
Unary plus and minus; logical and bitwise negation
Right to left
**
Exponentiation[157]
Right to left
* / %
Multiplication, division, and remainder
Left to right
+ -
Addition and subtraction
Left to right
<< >>
Bit-shift left and right
Left to right
< <= > >=
Comparisons
Left to right
== !=
Equal and not equal
Left to right
&
Bitwise and
Left to right
^
Bitwise exclusive-or
Left to right
|
Bitwise or
Left to right
&&
Logical and (short circuit)
Left to right
||
Logical or (short circuit)
Left to right
?:
Conditional expression
Right to left
= += -= *= /= %= &= ^= <<= >>=
Assignment operators
Right to left
,
Sequential evaluation
Left to right
[157]
ksh93m and newer.
The ** operator is not in the C language.
B.7. Typeset OptionsB.9. Emacs Mode Commands
Copyright © 2003 O'Reilly & Associates. All rights reserved.
Wyszukiwarka
Podobne podstrony:
appbappbappbappbappbappbappb (8)appbappbappbappb (4)appb (10)appbappbappbappbappbAPPBwięcej podobnych podstron