Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #4011
| From | Joshua Cranmer <Pidgeot18@verizon.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Java puzzler |
| Date | 2011-05-12 10:33 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <iqgr40$p2d$1@dont-email.me> (permalink) |
| References | <4db69c13-878f-4806-adb2-a3c5adb1c48c@glegroupsg2000goo.googlegroups.com> <qrGdnWE1mOKFHVfQnZ2dnUVZ_uKdnZ2d@earthlink.com> <alpine.DEB.2.00.1105112141410.27211@urchin.earth.li> |
On 05/11/2011 04:57 PM, Tom Anderson wrote: > If we're talking about things like: > > byte b = 0; > b += 2; > > The i agree that that should compile - it would be agonizing if it > didn't. But i see no earthly reason why this: > > byte b = 0; > int i = 1000000; > b += i; > > Should compile. Where you're using a literal, you have no way to make > the literal one size of integer or another, but when you're using a > variable, you do; an offset for a byte can be a byte itself. Well, if you step back and look at it from the semantic point of view, what the compiler sees at both instances the following pattern: <variable of type byte> += <expression of type int>. You could redefine literals of smaller numeric type, which makes the expression computation rules confusing (is (1001 - 1000) a byte, short, or int?). However, as long as byte, short, and char promote to int for integer computation, it still doesn't solve the += problem. You could change them to not promote to int, but that starts to cause interesting tangles in Java (the VM would either need to have instructions for all arithmetic instructions in byte, short, and char counterparts, in addition to the int, float, long, and double counterparts, or it would have to emit narrowing conversions after every subcomputation in an expression). But I can see reasons to allow your `b += i' expressions. Consider that use of the byte and short types are relatively rare, as they are only effective in memory reduction when used in arrays [1]. It is not unimaginable that many constants have type int but are naturally applicable to byte or short values. In such a case, b += i would make sense. > So, would it have been possible to write the language rules such that > integer literals have either some sort of indeterminate-length > pseudo-type that can be used submissively in all sorts of expressions, > or to have small integer literals have type byte, bigger ones type > short, and so on? Yes, it would have been possible, but if you throw in the results of compile-time constant expressions, things might get ugly. It also makes computing the type of a literal somewhat uglier for rather little benefit. [1] Well, the JVM could theoretically pack bytes, shorts, and chars inside classes, but I'm not sure if this is done in practice. -- Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Re: Java puzzler Gábor Bakos <aborgabor@gmail.com> - 2011-05-11 01:44 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-11 05:24 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-11 21:57 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-11 16:07 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-12 21:38 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 13:45 -0700
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 16:56 -0400
Re: Java puzzler markspace <-@.> - 2011-05-12 14:32 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 16:05 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 17:40 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:18 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 19:26 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-14 10:18 +0100
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-14 08:09 -0700
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-14 13:00 -0400
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-14 15:08 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-14 13:25 -0700
Re: Java puzzler markspace <-@.> - 2011-05-14 08:46 -0700
Re: Java puzzler Spock <spock@starfleet.ufp> - 2011-05-14 19:33 -0400
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 00:41 +0100
Re: Java puzzler markspace <-@.> - 2011-05-14 18:35 -0700
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-14 23:43 -0400
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 11:16 +0100
Re: Java puzzler markspace <-@.> - 2011-05-15 05:40 -0700
Re: Java puzzler Tom Anderson <twic@urchin.earth.li> - 2011-05-15 15:23 +0100
Re: Java puzzler markspace <-@.> - 2011-05-15 08:09 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 07:37 -0700
Re: Java puzzler markspace <-@.> - 2011-05-15 08:00 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 08:16 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 07:35 -0700
Re: Java puzzler markspace <-@.> - 2011-05-15 08:11 -0700
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-15 08:15 -0700
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-15 13:11 -0400
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 20:47 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:00 -0700
Re: Java puzzler markspace <-@.> - 2011-05-12 18:01 -0700
Re: Java puzzler Nancy 3 <n3@gmai1.c0m> - 2011-05-12 21:22 -0400
Re: Java puzzler Patricia Shanahan <pats@acm.org> - 2011-05-12 18:32 -0700
Re: Java puzzler Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-12 22:34 -0400
Re: Java puzzler Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-12 22:27 -0400
Re: Java puzzler "John B. Matthews" <nospam@nospam.invalid> - 2011-05-12 00:28 -0400
Re: Java puzzler Joshua Cranmer <Pidgeot18@verizon.invalid> - 2011-05-12 10:33 -0400
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-11 09:12 -0400
Re: Java puzzler Lew <noone@lewscanon.com> - 2011-05-11 09:13 -0400
Re: Java puzzler markspace <-@.> - 2011-05-11 08:00 -0700
csiph-web