The standard operators are all available in C, but there are some interesting notes.
The logical operators are called & (and), | (or) and ^ (xor). Also available are &&
and || which perform logical (as opposed to bitwise) AND and OR. These
operators have the very useful feature that they do not evaluate the second argument
if there is no need. For example,
mflg && !timeout()
will not evaluate !timeout() (logical not of function timeout()’s result) if mflg is
The equality operator is “==” to to distinguish from the assignment operator. There
are a set of useful shorthand-notations for amendment assignments. For example,
we need not write:
total = total + entry
because we can use
total += entry
Similarly we can have -=, *=, /=, &= etc. Also available are ++ and –– which
increment or decrement the value to which they are attached. If they occur before
the reference they operate before the value is taken otherwise the operate after.
Thus if a=2 and b=5,
a++ + b++ == 7 ++a + ++b == 9
Input & Output
As mentioned earlier, there are no input or output commands as such in C.
However, the standard function library should contain a good selection. All I/O is
handled through “streams” which can be the keyboard, a printer, the screen, a disk
file or whatever, Under UNIX, all console I/O is treated as a group of streams which
can consequently be redirected if desired. UNIX allows stdin and stdout (the
default console streams) to be redirected on the command line which invokes the
program. Since CP/M does not do this, the extent to which this particular feature is
supported will depend on the implementation. HiSoft
will operate correctly
providing the program calls a standard library function “cpm_cmd_line()” before
doing anything else. The compiler used to compile the Gemini utilities I mentioned
earlier does not support command line redirection.