【发布时间】:2011-09-09 18:14:16
【问题描述】:
考虑以下 sn-p:
struct foo {
int a;
int b;
int c;
};
struct foo f;
printf("%u, %u\n", sizeof(struct foo), sizeof(f));
代码返回相同的值,但我想知道应用于变量的 sizeof() 是正确的还是只是巧合?
谢谢。
【问题讨论】:
-
你试过谷歌搜索“sizeof应用于变量”吗?前两个结果(其中一个来自 StackOverflow)本来可以回答您的问题。
-
是的,两个
sizeof表达式返回相同的值。请注意,第二个不需要括号;sizeof是运算符,而不是函数。但是%u需要unsigned int类型的参数,而不是size_t。写这个:printf("%zu %zu\n", sizeof (struct foo), sizeof f);或这个:printf("%lu %lu\n", (unsigned long)sizeof (struct foo), (unsigned long)sizeof f);。%zu是 C99 特有的功能;你系统的printf可能不支持它。