The C standard is unambiguous about what should happen in this case and the compilers are operating as required by the standard (see section 6.3.1.8). Except for where the C standard leave some things as an implementation choice, the standard is usually very clear. I don't think it is clear in this case, but it is unambiguous. The trick of course, is to fully understand the standard when you are programming in C. The other trick is to stay away from things that are somewhat more subtly defined (for instance operations mixing signed and unsigned types), but that is what the original posted didn't want to hear. I think one of the worst things the C standard does is leave the size of many standard types i.e. int, as implementation defined.=20 See:=20 http://c0x.coding-guidelines.com/6.3.1.8.html -----Original Message----- From: piclist-bounces@mit.edu [mailto:piclist-bounces@mit.edu] On Behalf Of John Gardner Sent: Friday, May 02, 2014 6:00 PM To: Microcontroller discussion list - Public. Subject: Re: [OT] Why on earth??!? That's the trouble with HLL - The good news is - You don't have to keep track of what the compiler is doing (You hope.) The bad news - What the compiler actually does sometimes endows you with "experience"... Eppur, si muove... -- http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/chang= e your membership options at http://mailman.mit.edu/mailman/listinfo/piclist --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .