[this is not a question for the GCC developers list] Kumaresh> Is it necessary to type-cast both a32 and b32 to make above Kumaresh> statements to work as expected?
Yes. Kumaresh> Without casting, I find that addition works while the Kumaresh> multiplication does not. Addition is not supposed to work either. I guess that your addition just doesn't overflow the capacity of an UINT32 while your multiplication does. The following program shows it clearly: #include <stdio.h> typedef long long unsigned UINT64; typedef long unsigned UINT32; int main(void) { UINT32 a = 0xffffffff; UINT32 b = a; printf ("a+b = 0x%016llx\n", (UINT64) (a+b)); return 0; } The output will be: a+b = 0x00000000fffffffe instead of your expected a+b = 0x00000001fffffffe Sam -- Samuel Tardieu -- [EMAIL PROTECTED] -- http://www.rfc1149.net/