[LAU] OT: C or C++?

James Morris jwm.art.net at gmail.com
Fri Oct 15 07:43:25 UTC 2010


On 15 October 2010 08:13, Philipp Überbacher <hollunder at lavabit.com> wrote:
> Excerpts from R. Mattes's message of 2010-10-14 22:35:56 +0200:
>> > What does the following example evaluate to?
>> >    1.2+3+"||"+3+2.1
>>
>> $ cat > Foo.ava
>> class Foo
>> {
>>   static { System.out.println( 1.2+3+"||"+3+2.1 ); System.exit( 0 ); }
>> }
>> ^D
>> $ javac Foo.java
>> $ java Foo
>>
>> C'm on, that's not really that hard, no Eclipse, no packages, no real object.
>
> Is this using some implicit main() or something?
>
>> > I think there's far too much distracting mess to sort out before you
>> > even get to programing, so I don't think it's a good teaching language
>> > (for total beginners at least).
>>
>> What's distracting here?
>>
>> Regarding your example -my main question would be: what do _you_ expect from that
>> code. 'I'd say you get what you ask for.
>
> I wouldn't expect 4.2||32.1 as a result. Either interpret the whole
> thing as a string, or the number parts as float or don't do this kind of
> automagic conversion at all. Interpreting numbers as numbers and
> interpreting numbers as string in the same statement is something I
> wouldn't expect.

Breaking your expectations is the exact point of statements like
1.2+3+"||"+3+2.1. You'll find similar statements for every language.
Knowing why they produce the unexpected is important for debugging
your code. Unless you're entering a code-obfuscation contest you
shouldn't write code like that.


James.


More information about the Linux-audio-user mailing list