kchen@Apple.COM (Kok Chen) (12/21/88)
In article <1911@pembina.UUCP> lake@alberta.UUCP (Robert Lake) writes: > int i; > short j = 1; > i = -(unsigned short)j; >If I run this program on a VAX 11/780 using 4.3 BSD, I obtain -1 as the >answer. However, if I run this on a SUN using SUN OS 3.5, I obtain 65535 >as the answer. Who is right? ... From K&R-I, arithmetic operators (including unary ones) are supposed to work on longs, no? I would have compiled the line of code into: load j sign extend to a long negate (cast to type of i) store i This means BSD is the more correct one, based on K&R-I. But, why would one have written such a contorted line of code in real life? Or, is this yet another attempt at breaking compilers? :-) Kok Chen {decwrl,sun}!apple!kchen Apple Computer, Inc.