sizeofは実際の関数ではないようですか?
たとえば、次のように記述した場合:
int i=0;
printf("%d\n", sizeof(++i));
printf("%d\n", i);
次のような出力が得られる場合があります。
4
0
そして、アセンブルコードを掘り下げると、次のようなsthが見つかります。
movl $4, %esi
leaq LC0(%rip), %rdi
xorl %eax, %eax
call _printf
したがって、コンパイラは、printf addのパラメータがそれを呼び出すときに、定数「4」を直接配置します。では、sizeofは何をするのでしょうか?