implementation of sizeof operator
I have tried implementing the sizeof operator.. I have done in this way.. #define my_sizeof(x) ((&x + 1) - &x) But it always ended up in giving the result as '1' for either of the data type.. I have then googled it for this.. and i found the code typecasted #define my_size(x) ((char *)(&x + 1) - (char *)&x) And the code is working if it is typecasted.. I dont understand why.. This code is also PADDING a STRUCTURE perfectly.. It is also working for #define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x) Can anyone please explain how is it working if typecasted and if not typecasted?