The ANSI standard (the last I time looked) defined pointer comparison to be unsigned, and I suspect most of us regard memory addresses as unsigned. Thus pointers should be extended like unsigned numbers (i.e zero filled).