首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么(以及何时)我需要在sizeof之后使用括号?

为什么(以及何时)我需要在sizeof之后使用括号?
EN

Stack Overflow用户
提问于 2011-05-05 16:42:36
回答 2查看 13.3K关注 0票数 85

以下代码编译失败:

代码语言:javascript
复制
typedef int arr[10];
int main(void) {
    return sizeof arr;
}

sizeof.c:3: error: expected expression before ‘arr’

但是如果我把它改成

代码语言:javascript
复制
sizeof(arr);

百事大吉。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-05 16:52:00

根据6.5.3,sizeof有两种形式,如下:

代码语言:javascript
复制
sizeof unary-expression
sizeof ( type-name )

因为代码中的arr是一个type-name,所以必须用圆括号括起来。

票数 126
EN

Stack Overflow用户

发布于 2017-02-18 21:51:14

我想是因为你有typedef吧。如果您删除它,它应该会编译。

来自维基百科的例子:

代码语言:javascript
复制
/* the following code fragment illustrates the use of sizeof     
 * with variables and expressions (no parentheses needed),
 * and with type names (parentheses needed)    
 */
char c;
printf("%zu,%zu\n", sizeof c, sizeof (int));
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5894892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档