2
的操作数的名称当你定义像下面结构为的sizeof
typedef struct num {
int a;
int b;
} A;
然后sizeof(A)
有效的结构,但sizeof(num)
不是。任何人都可以解释为什么sizeof运营商不接受num
?
的操作数的名称当你定义像下面结构为的sizeof
typedef struct num {
int a;
int b;
} A;
然后sizeof(A)
有效的结构,但sizeof(num)
不是。任何人都可以解释为什么sizeof运营商不接受num
?
由于num
自身不构成在C语言的类型(仅struct num
或其的typedef A
构成类型)。
sizeof unary-expression
sizeof (type-name)
即num
既不是类型也不是一元表达式:所以,sizeof
作为其操作数不是在任一种形式的,它的定义为失败。
因此,sizeof(struct num)
或sizeof(A)
是好的,但sizeof(num)
不是。
'num'是一个标签,而不是一个类型。所以'sizeof(num)'是无效的,但'sizeof(struct num)'很好。 – Michael
@unwind感谢您的评论!我认为大小是一个函数... – SD11
@unwind在这种情况下,'sizeof A'不起作用。由于'A'是一种类型,'sizeof'需要括号。 –