what's the mechanism of sizeof() in C/C++?
It seems sizeof is not a real function? for example, if you write like this: int i=0; printf("%d\n", sizeof(++i)); printf("%d\n", i); You may get output like: 4 0 And when you dig into the assemble code, you'll find sth like this: movl $4, %esi leaq LC0(%rip), %rdi xorl %eax, %eax call _printf So, the compiler put directly the constant "4" as parameters of printf add call it. Then what does sizeof do? You know, there's a reason why there are standard documents (3.8MB PDF) ; C99, section 6.5.3.4, §2: The sizeof operator yields the size (in bytes) of its operand, which may be an expression or