Boolean Operators Slighted in C
VLD/VMB
gwyn at BRL.ARPA
Sat May 10 06:52:37 AEST 1986
Steven Brian McKechnie Sargent <valid!sbs> says ("> ..."):
> A Boolean data type distinct from integers clutters the language with
> another (moderately useless) type and removes handy idioms like
> foo[x == 0] = bar;
Boolean quantities form an important abstract data type distinct from
counters, sets, real numbers, etc. By not making the distinction,
the language encourages usage errors, the most notorious being
if ( a = b )
stuff;
Sure, one can make integers do double (or triple, or ...) duty,
but by now every programmer should realize the value of data
abstraction.
> New operators like "< =", in addition to being hard to spell and understand,
> facilitate usages that just aren't that common. I hardly ever want to
> say x = (x < y), and I don't mind typing the extra characters. I'm not
> interested in paying compiler vendors money for supporting this (or any
> other dubious misfeature pounded into the language for "completeness'
> sake.")
Here is an example where proper use of Boolean data would be violated.
A statement like
x = x < y;
should NEVER be used, since it assigns a Boolean result to an
arithmetic variable. This means that a "< =" operator is not
a good idea.
I find data abstraction to be a Good Thing, and have produced
much better code since defining a Boolean data type and using
it in a strictly type-correct manner.
More information about the Comp.lang.c
mailing list