【发布时间】:2019-08-22 22:57:25
【问题描述】:
我知道这是 C 语言中一个非常基本的问题,所以如果这太天真了,我提前道歉:我只是在几天内学习基础知识。
int main() {
// initialize the variables
int num_whitespaces, num_other;
int num_digits[10];
printf("%lu", sizeof(num_digits));
}
这打印出40,我觉得这很奇怪。为什么不打印10,这将是javascript中数组的长度左右。
【问题讨论】:
-
我不知道
C,但我知道int的大小是32 位(4 字节)。 -
您是否已经尝试搜索过类似的问题?可能是因为它返回数组的大小(所有元素),而不仅仅是长度 - 元素的数量。所以在这种情况下,int 似乎是 4 个字节
-
欢迎来到 SO!请在发布前搜索现有问题。您不太可能遇到任何人还没有多次解决的问题。见How to Ask。
-
@VladimirSerykh 这是完全错误的。 C 中的
int必须至少为 16 位,否则标准不要求固定大小,因为 C 应该是可移植的。因此,例如int在 18 位架构上将是 18 位 -
@Shared 您还调用了未定义的行为,因为您使用了错误的格式说明符。 To print a
size_t(which is the result ofsizeof) use%zu
标签: c