Bools reloaded

xs0 xs0 at xs0.com
Mon Mar 6 04:45:01 PST 2006


Ivan Senji wrote:
> xs0 wrote:

>> I used to think so too, until I was forced to code in Java :) 
> 
> I also coded in Java and never found this to be a problem :)

Sure, it has an easy "workaround", but like I said, I don't think the 
added verbosity helps, rather the opposite.


>> Even though I don't mind typing something as simple as
>>
>> if (a!=null)
>>
>> the verbosity of longer expressions really annoys the heck out of me. 
>> Now, I prefer
>>
>>  > if (a && b && c && d) // check for nulls
> 
> But what is going on behind the scene if a,b,c,d are ints or ponters,
> conversions to bools? I still don't get it how logic && operator can be 
> aplied to integers. What is 5 && 3? (Except two numbers: 5,3.) It has no 
> value regarding truth. It is neither true nor false.

Well, I believe that is just a matter of education/documentation. As 
much as you need to know that && will short-circuit, you also need to 
know that it will evaluate the operands as booleans. And, while 3 or 5 
are definitely neither true nor false in themselves, one can certainly 
define a conversion between them and booleans..

It's somewhat like Java's evaluation of "abc"+123. It's implied that 123 
will be converted to a string form, and no-one seems to mind, even 
though there is no implicit relationship between numbers and strings 
(no, there isn't; 123 as a string could just as easily be "321"(*) or 
"123.0000000000000", "onetwothree" or "WARNING: auto-conversion of 123 
of type int to java.lang.String").. Would you also prefer

"abc"+String.valueOf(123)

or even

// hey, who ever heard of a sum of strings?
StringBuffer sb=new StringBuffer();
sb.append("abc");
sb.append(123);
return sb.toString();

?

I mean, compared to almost everything else in programming, is it really 
so hard to grasp/learn/remember/know/whatever that 0 and null evaluate 
to false, while everything else evaluates to true?


xs0

*) this could be called a little-endian string :)



More information about the Digitalmars-d-announce mailing list