分类: C/C++
2008-03-20 18:43:39
来源: 作者:antigloss 等级:精品
发布于2006-05-06 13:36 被读3598次 【字体: 】 |
sizeof 运算符返回其操作数占用空间的大小,以字节为单位。注意,C 定义字节的大小为 char 类型的大小。char 通常是 8 位(bit)的,当然也可以更大。操作数可以是特定的(例如变量),也可以是一种类型,例如 int、double。当操作数是一种类型时,必须使用括号把操作数括起来。 #include <stdio.h> int main(void) return 0; 使用 gcc 编译运行上述程序得到的输出为 4, 4, 8 ,这说明我的电脑中,int 是 4 字节的,double 是 8 字节的。也就是说,int 类型的数据对象占用 4 字节空间;double 类型的数据对象占用 8 字节空间。当然,在不同的系统编译运行此程序会得到不同的输出。sizeof(3.14) 也可以写成 sizeof 3.14 ,因为 3.14 是数据对象,数据对象作为操作数时,可以不用括号。(unsigned long) 的作用是把 sizeof 的返回值强制转换成 unsigned long 类型的值。以后我们会详细讲述。 sizeof 的返回值为 size_t类型。size_t 定义于头文件stddef.h,它是机器特定(machine-specific)的无符号整数类型,标准保证它足以用来表示内存中任何对象的大小。size_t 可能是 unsigned int,也可能是 unsigned long 或者别的无符号整数类型。 size_t 是利用 C 的 typedef 机制定义的。我们可以用 typedef 为已有的类型创建别名(alias)。例如: typedef unsigned long my_size_t; 上述语句为 unsigned long 创建了一个别名——my_size_t。创建别名后,我们就可以用这个别名声明无符号长整型变量: my_size_t ul_val; C99 提供 %zu用于输出 size_t 类型的值。如果您的编译器不支持,可以改用 %lu,同时也要把 sizeof 的返回值转换成 unsigned long 类型的。 参考资料:C Primer 5th Edition 本文版权归 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。 |