【发布时间】:2020-11-09 23:28:30
【问题描述】:
#include<stdio.h>
int main(void)
{
unsigned const* const a, b;
printf("size of a: %ld, size of b: %ld ", sizeof(a), sizeof(b));
return 0;
}
此代码在不同的编译器上给出不同的输出。 在 gcc 编译器中,输出为:
"a的大小:8,b的大小:4
在 MSVS 2019 编译器和 MinGW 编译器中,输出为
"a的大小:4,b的大小:4
我正在寻找这种行为背后的解释。
编辑:
a 和 b 这里有不同的变量类型吗?
【问题讨论】:
-
a是指针,b不是 -
*绑定到变量,而不是类型,这就是为什么许多人更喜欢将其写为int *a, b;的原因。或者更好地将它们分开int *a;、int b;并避免所有可能的混淆。
标签: c visual-studio gcc mingw