c - sizeof 是函数还是运算符?
问题描述
为什么我们说sizeof(variable)
是操作符,而不是函数?
它看起来像一个函数调用,当我考虑运算符的含义时,它在我看来像是+
or -
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;
如果类型名称没有括号,您可能会在 gcc 编译器中看到如下错误:
test.c:7:20: error: expected expression before ‘int’
7 | size_t s = sizeof int;
| ^~~
但是做sizeof 12
还是sizeof a
没问题的。
推荐阅读
- jquery - 如何在点击切换开关时增加价值?
- c# - 如何在表单提交时将 foreach 中的 viewbag 值从视图传递到控制器
- c++ - 编译“set_ssl_context_callback”时出错:在 Windows 上
- c# - .Net - 在 DataTable 中查找最大值
- draftjs - 如何将内容状态推送到当前编辑器状态?editorState.push 方法似乎对我不起作用?
- java - Windows 10 的 Jhipster 编译错误
- apache-kafka - 如何让 Kafka 消费者订阅新的分区
- aws-lambda - 在 AWS codedeploy 挂钩中解析状态回调
- python - Pandas 中的条件颜色格式
- python - 动画 matplotlib 的 Poly3DCollection