看来 sizeof 不是一个真正的函数?
例如,如果你这样写:
int i=0;
printf("%d\n", sizeof(++i));
printf("%d\n", i);
您可能会得到如下输出:
4
0
当你深入研究汇编代码时,你会发现这样的东西:
movl $4, %esi
leaq LC0(%rip), %rdi
xorl %eax, %eax
call _printf
所以,编译器直接把常量“4”作为printf add 调用它的参数。那么 sizeof 是做什么的呢?