回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++教程 >> C 语言基础教程 >> 32. sizeof 运算符
最 近 更 新
54. goto 语句
53. switch 语句推荐
52. continue 和 break
51. 条件运算符(?:)
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
46. if 语句
45. 循环应用实例 2
最 新 推 荐
53. switch 语句推荐
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
44. 循环应用实例 1推荐
43. 循环嵌套推荐
40. for 循环推荐
37. 关系运算符推荐
36. while 循环推荐
热 门 排 行
2. 第一个 C 程序推荐
31. 预处理指令 #define..推荐
1. C 语言简介
11. 基本数据类型:整型..推荐
24. 运算符的优先级和结..推荐
5. 如何编写函数
30. 字符串字面量推荐
13. 标识符命名规则
36. while 循环推荐
7. 第三个 C 程序推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

32. sizeof 运算符


来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品
发布于2006-05-06 13:36 被读3748次 【字体:

    sizeof 运算符返回其操作数占用空间的大小,以字节为单位。注意,C 定义字节的大小为 char 类型的大小。char 通常是 8 位(bit)的,当然也可以更大。操作数可以是特定的数据对象(例如变量),也可以是一种类型,例如 int、double。当操作数是一种类型时,必须使用括号把操作数括起来。

        #include <stdio.h>

        int main(void)
        {
            int ival = 100;
           
            printf( "%zu, %zu, %zu\n", sizeof(int), sizeof ival, sizeof(3.14) );
            /* %zu 是 C99 新增的,如果您的编译器不支持,请用以下语句 */
            /* printf( "%lu, %lu, %lu\n",
                       (unsigned long)sizeof(int), (unsigned long)sizeof ival,
                       (unsigned long)sizeof(3.14) ); */

            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
          The C Programming Language 2nd Edition
          C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C 语言运算符
巧用异或交换整型变量的值
51. 条件运算符(?:)

上一篇:31. 预处理指令 #define 和符号常量
下一篇:33. 语句(Statement)

共有评论 1 条 网友评分 4分 查看全部评论

游客:Jeff
评分:4
很好,受益非浅... ...

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss