什么时候我们应该使用带括号和不带括号的sizeof
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
?
将sizeof
与类型一起使用时,需要围绕类型使用括号。 将它与表达式一起使用时,则不会。 但是你也可以在这种情况下包含它们,在这种情况下你不必担心运算符优先级。 对于像这样的不常见的运营商,更少的人会确定优先级,因此清晰度肯定有帮助。
所以我会说最好总是使用它们。
[expr.sizeof] / 1:
操作数是一个表达式 ,它是一个未评估的操作数(第5章),或带括号的type-id 。
因此,括号仅适用于类型。 如果您更喜欢使用括号来表示清晰度和一致性(就像我一样),您可以随时使用它们,因为表达式周围的括号形成另一个表达式 。
sizeof
的运算符优先级不是很清楚,可能会引起烦恼。
此外,对于sizeof...
运算符,您始终必须使用括号(一致性的另一个原因)。