Casting an expression to bool means testing for 0 or !=0 for arithmetic types

Pluto pluto at planets.not
Sat Jul 31 16:30:21 PDT 2010


== Quote from Simen kjaeraas (simen.kjaras at gmail.com)'s article
> Pluto <pluto at planets.not> wrote:
> > This part has always bothered me. Could somebody please explain to me the
> > rationale behind limiting functions to one usable error code?
> Well, traditionally it was done because testing for 0/non-0 is a simple
> and fast operation.
So speed it is. Was <1 really slower back then?

> Also, boolean logic can be thought of as simple maths,
> as AND is multiplication and OR is addition. This only makes sense if
> false == 0.
false < 1, is what I would expect.
It even makes it more symmetrical.

> As for having more error codes, why would you use an int for it? Would it
> not be more logical to use an enum, and to explicitly test for the value
> upon return? Why not use exceptions?
> If the problem is that enums are non-extensible, and exceptions are too
> heavy, many libraries use the convention that 0 means success, and
> anything else is an error code.
Don't worry, I won't start using return types like this in D. Just interested.


More information about the Digitalmars-d-learn mailing list