我最近遇到了一些奇怪的问题,我写了一些代码.
printf("%li\n",(sizeof(char)));
printf("%li\n",sizeof(4*(sizeof(char))));
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,第一行打印"1",第二行打印"8".如果我将4乘以1,我会得到4.为什么会这样?
也许你打算打印4*(sizeof(char)).那会是4.
但是你真的打印了sizeof(4*(sizeof(char))). sizeof产生存储其操作数所需的字节数.
类型4*sizeof(char)是size_t系统上的64位类型,因此您将获得8输出.
您可以通过打印获得相同的结果sizeof(123456*sizeof(float)). sizeof没有告诉你任何关于它的操作数的值,只需要多少字节来存储它.