Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Wed, 11 May 2011 18:07:38 -0500 Date: Wed, 11 May 2011 16:07:37 -0700 From: Patricia Shanahan User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Java puzzler References: <4db69c13-878f-4806-adb2-a3c5adb1c48c@glegroupsg2000goo.googlegroups.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 41 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 75.8.126.96 X-Trace: sv3-qyGWSUDgnNkBy/Qa2jC+Am1k3YPWCJm7RUsi7sWnCEBGTOhg0xklKXeRRQglPL4Wf/UFCMyqXpVOhLp!A8A+yBbI+Txdvdc4iLTDreaWJCOM0YsU+fTdwbhUZ1qUgcgcQ1C7QkSsn9mzNTdkWLgMrPf2atHK!QIKZDBOXcCY0LBRHS4sqmt/cdsfY6Xk/hCbHV6Fa50E= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2591 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:3993 On 5/11/2011 1:57 PM, Tom Anderson wrote: > On Wed, 11 May 2011, Patricia Shanahan wrote: ... >> Without the implicit cast to the left hand side type, "+=" could not >> have been used for byte, char, or short. The arithmetic operation >> promotes to int, and there would be no way to cast back to the target >> type. > > Well, that's true if one takes as given that the operation promotes to > int. Could it have been specified not to? Sure, but that would create other weirdness. For example: byte b = 100; byte c = 100; int i = b + c; would assign -56 to i, because that is the byte result of the addition. > > 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. I don't understand this argument, because (byte)2 is a constant expression of type byte. I think the core issue is the use of int for results of narrow integer arithmetic. Patricia