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

Simen kjaeraas simen.kjaras at gmail.com
Sat Jul 31 18:58:13 PDT 2010


Pluto <pluto at planets.not> wrote:

> == 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?

Likely not. But the assembly is easier:
jnz <label>; vs cmp EAX 0; jg <label>;


>> 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.

How?
Let's start out with a false value f of -1. Now AND it with itself
(f * f), and you get 1, which is true. This does not seem correct.


-- 
Simen


More information about the Digitalmars-d-learn mailing list