标准C中的sizeof和sizeof()有什么区别?

9

我看到一些代码直接使用了 sizeof,不确定它是否符合标准 C 语言。让我惊讶的是,代码能够正常工作。以下是一个例子:

#include <stdio.h>
#include <string.h>

int main()
{
   char buff[255];
   printf("size %d\n", sizeof buff);
   return 0;
}

Output: size 255

如您所见,在上面的例子中,我使用了 sizeof <variable> 而不是 sizeof(<variable>) 请进一步解释。

2
sizeof 是一个运算符,而不是函数。你可以使用两种变体。 - Crozin
谢谢。是的,问题已经得到完美解答了。 - Sandeep
1个回答

22

“当 sizeof 的操作数是一个类型时,它必须用括号括起来。但是如果 sizeof 的操作数是一个变量,则不需要括号。”--《专家C编程:深入C语言秘密》。并根据c11标准:

sizeof unary-expression
sizeof ( type-name )

@Jongware:当然!我已经编辑了答案并引用了它。感谢您指出这一点。 - Yulong Ao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接