什么时候我们应该使用带括号和不带括号的sizeof

时间:2015-01-21 19:19:37

标签: c++ c

typedef struct rem{
    int  addr;
    char addrbuf[32];
} foo;

这两个代码都返回相同的结果

foo addr;
printf("size is: %d\n",sizeof addr);
printf("size is: %d\n",sizeof (foo));

大小是:36

大小是:36

但我们什么时候应该使用带括号和不带括号的sizeof

2 个答案:

答案 0 :(得分:21)

sizeof类型一起使用时,您需要围绕该类型使用括号。将它与表达式一起使用时,则不然。但是你也可以在这种情况下包含它们,在这种情况下你不必担心运算符优先级。对于像这样的不常见的运营商,更少的人会确定优先级,因此清晰度肯定有帮助。

所以我说它总是优先使用它们。

答案 1 :(得分:10)

[expr.sizeof] / 1:

  

操作数是表达式,它是未评估的操作数   (第5条)或括号 type-id

因此,只有类型才需要括号。如果您更喜欢使用括号来表示清晰度和一致性(就像我一样),您可以随时使用它们,因为表达式周围的括号形成另一个表达式
sizeof的运算符优先级不是很清楚,可能会引起不适。

此外,对于sizeof...运算符,您始终必须使用括号(一致性的另一个原因)。