c - 数据类型的 sizeof 运算符错误

标签 c

我发现很奇怪,在使用 sizeof int 时出现编译错误,而 sizeof var(其中 var 是一个变量)工作正常。

int a;

a = (int) sizeof( a ); //ok
a = (int) sizeof( int ); //ok

a = (int) sizeof a; //ok
a = (int) sizeof int; //error

谁能告诉我,为什么会出现错误?

(旧机器,mac osx 10.5.8,gcc 4.0.1)

最佳答案

根据 C 标准(引用自 ISO/IEC 9899:TC3 第 6.5.3.4 节):

The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type.

因此使用不带括号的类型名称是不合法的。

此外,sizeof 返回类型为 size_t 的实现定义值,您可能不应该转换它。

关于c - 数据类型的 sizeof 运算符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782604/

相关文章:

c - 在 C 中使用指针结构

c++ - 在 C++ 应用程序中使用 boost 的问题

c - MAKE如何记住文件时间戳

C 将 bmp 像素读入二维数组

c - 如何停止在 C 中显示输入项

c - 从 CSV 文件中读取行并分离成值 (sscanf SIGSEGV)

c - 在 Linux/Unix/Posix/BSD 类型系统上解析 DNS TXT 记录的最佳方法?

C- While 循环不工作

c - 递归检查数组是否按升序排列

c - 如何从标准FILE结构获取文件名?