这可能是太明显的了.但是,我找不到具体的答案,尽管许多stackoverflow线程都在讨论这个问题的不同方面.
typedef struct _tmp {
unsigned int a;
unsigned int b;
} tmp;
int main()
{
int c=10;
if (c <= sizeof tmp) {
printf("less\n");
} else {
printf("more\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我编译这个编程为 -
g++ -lstdc++ a.cpp
Run Code Online (Sandbox Code Playgroud)
我收到一个错误 -
expected primary-expression before ‘)’ token
Run Code Online (Sandbox Code Playgroud)
我想我错过了一些非常明显和直截了当的事情.但似乎无法确定它: - /
谢谢!
Luc*_*ore 11
1)
sizeof运算符产生其操作数的对象表示中的字节数.操作数是一个表达式,它是一个未评估的操作数(第5章),或带括号的type-id.(强调我的)
在您的情况下,它是一个type-id,因此必须用括号括起来.8.1类型名称[dcl.name]中描述了什么类型ID .
sizeof tmp应该是sizeof (tmp).
如在
if (c <= sizeof tmp)应该是if (c <= sizeof (tmp)).
是的,非常"明显而直截了当".
nos*_*nos 11
sizeof运算符有两种形式:
sizeof expression
sizeof(type)
Run Code Online (Sandbox Code Playgroud)
当你给它一个类型时,你需要括号, sizeof(tmp)