首页 > 解决方案 > sizeof 是函数还是运算符?

问题描述

为什么我们说sizeof(variable)是操作符,而不是函数?

它看起来像一个函数调用,当我考虑运算符的含义时,它在我看来像是+or -or*等​​等

标签: coperatorssizeoffunction-call

解决方案


它是一个运算符,你不需要使用括号,除了“当操作数是类型名时,必须用括号括起来”。这是一个语法限制,但不应与函数调用混淆。

请参阅下面来自 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;

如果类型名称没有括号,您可能会在 gcc 编译器中看到如下错误:

test.c:7:20: error: expected expression before ‘int’
    7 |  size_t s = sizeof int;
      |                    ^~~

但是做sizeof 12还是sizeof a没问题的。


推荐阅读