On Thursday 11 January 2007 02:02, Neil Brown wrote: > If regs->rax is unsigned long, then I would think the compiler would > be allowed to convert > > switch (regs->rax) { > case -514 : whatever; > } > > to a no-op, as regs->rax will never have a negative value.
In C, you never actually compare different types. They always promoted to some common type first. both sides of (impicit) == here get promoted to "biggest" integer, in this case, to unsigned long. "-514" is an int, so it gets sign extended to the width of "long" and then converted to unsigned long. -- vda - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/