在 typedef-ed 结构上使用 sizeof 运算符
Using sizeof operator on a typedef-ed struct
这可能太明显了。但是,我找不到具体的答案,尽管许多堆栈溢出线程都在谈论这方面的不同方面。
typedef struct _tmp {
unsigned int a;
unsigned int b;
} tmp;
int main()
{
int c=10;
if (c <= sizeof tmp) {
printf("lessn");
} else {
printf("moren");
}
return 0;
}
我把这个程序编译为——
g++ -lstdc++ a.cpp
我收到一个错误 -
expected primary-expression before ‘)’ token
我想我错过了一些非常明显和直接的东西。但似乎无法确定它:-/
谢谢!
5.3.3 大小 [expr.sizeof]
1)
sizeof
运算符在其操作数的对象表示中产生字节数。操作数是 表达式(未计算的操作数)(条款 5)或带括号的类型 ID。 (强调我的)
在您的情况下,它是一个类型 ID,因此必须用括号括起来。什么是类型 ID 在 8.1 类型名称 [dcl.name] 中描述。
sizeof tmp
应该是sizeof (tmp)
.
如在
if (c <= sizeof tmp)
应该是if (c <= sizeof (tmp))
.
是的,非常"明显和直接"。
sizeof 运算符有两种形式:
sizeof expression
sizeof(type)
当你给它一个类型时,你需要括号,sizeof(tmp)
在
tmp
两边添加括号:sizeof(tmp)
相关文章:
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 在 sizeof 运算符上强制编译时错误
- 在可变参数模板中使用 sizeof 运算符跳过递归结束的函数
- 编译器如何在c中计算sizeof运算符
- C 和 C++ 中的不同输出与 sizeof 运算符
- 在 typedef-ed 结构上使用 sizeof 运算符
- 对sizeof运算符感到困惑
- 为什么 sizeof 运算符无法在函数模板中工作
- 在 C 和 C++ 中返回 sizeof() 运算符的值
- 为什么 sizeof 运算符不显示大小为 20
- C/C++ sizeof 运算符:为什么 sizeof( 'a' ) 返回不同的值?
- sizeof 运算符为 C 和 C++ 返回不同的值?
- 包括由 sizeof 运算符返回的size_t的头文件
- 为什么 sizeof 运算符在传递给方法的数组上使用时返回错误的值
- 当我们对没有任何数据成员的类的对象使用sizeof运算符时.那么输出会是什么
- c++sizeof运算符-指向双精度的指针
- sizeof运算符返回不同的大小
- sizeof()运算符的行为
- c++sizeof运算符是如何计算大小的