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