Run*_*Run 6 c operators sizeof function-call
为什么说sizeof(variable)
是运算符,而不是函数?
它看起来像一个函数调用,当我考虑运算符的含义时,在我看来像+
or-
或*
等等
它是一个运算符,您不需要使用方括号,除了“当操作数是类型名称时,它必须包含在括号中”。这是一个语法限制,但不应与函数调用混淆。
请参阅下面来自 GNU文档的最后一个示例:
size_t a = sizeof(int);
size_t b = sizeof(float);
size_t c = sizeof(5);
size_t d = sizeof(5.143);
size_t e = sizeof a;
Run Code Online (Sandbox Code Playgroud)
如果类型名称没有括号,您可能会看到这样的错误,使用 gcc 编译器:
test.c:7:20: error: expected expression before ‘int’
7 | size_t s = sizeof int;
| ^~~
Run Code Online (Sandbox Code Playgroud)
但是做sizeof 12
还是没问题sizeof a
。