sizeof是一个单目运算符,优先级为2,它的用途是:由于数据类型随系统运行环境可能导致不同,因此要知道一个变量在所有情况下的大小是很困难的,所以C定义了编译时运算符,sizeof

sizeof(操作数);

1.若操作数是char,unsigned char ,signed char,则返回值一定是1,因为ANSI C规定字符类型就是1个字节,下面三种写法都会打印出1

printf("%d", sizeof(char));
printf("%d", sizeof(unsigned char));
printf("%d", sizeof(signed char));

2.除了1中的类型之外,其他的类型ANSI C没有规定,所以返回值依赖于具体的实现

3.当操作数是指针时,sizeof依赖于具体的编译器
4.当操作数是数组时,返回值是数组占用的总内存字节数,下面示例会打印出16

int a[] = {1,2,3,4};
printf("%d", sizeof(a));

5.当操作数是联合类型,则返回该联合体内最大的那个成员类型所占用的字节数,下面的示例会打印出8

union MyUnion
{int a;double b;char c;
};
MyUnion ys;
printf("%d",sizeof(ys));

6.当操作数是结构体时,则返回的是该结构体所有成员类型+不同编译器考虑对齐的情况,也就是说,最终还是取决于不同的编译器,例如下面的代码在我的visual studio 2017下打印出8

struct MyStruct
{char a[3];int b;
};
MyStruct ys;
printf("%d",sizeof(ys));

总结:总体来说,sizeof会返回操作数所占了内存多少个字节

C++自学06:sizeof运算符相关推荐

  1. C++ sizeof 运算符的使用

    sizeof  是C++ 中 唯一的一个带字母的运算符, sizeof 的功能: 返回指定的数据类型或者表达式值的数据类型在内存中所占的字节数. sizeof  运算符的使用 1 sizeof(类型) ...

  2. c++中利用sizeof运算符计算结构体大小问题探讨

    c++中提供的sizeof运算符可以方便得计算出内置类型的字节数大小,比如sizeof(int),sizeof(char),sizeof(double)的返回值分别为4,1,8,这是很容易理解的.但是 ...

  3. python sizeof函数_C++ sizeof 运算符 | 菜鸟教程

    C++ sizeof 运算符 sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 ...

  4. C语言sizeof运算符

    C语言并没有规定各种类 占用存储空间的大小,而是根据操作系统的位数来确定 同一种数据类型,在不同的编译系统中所占空间不一定相同 比如,在16位的编译系统中,int类型占用2个字节,而在32位的编译系统 ...

  5. c语言 sizeof size_t,C/C++中的sizeof运算符和size_t类型的详解

    sizeof的作用 sizeof是c的运算符之一,用于获取操作数被分配的内存空间,以字节单位表示. 这里指的操作数,可以是变量,也可以是数据类型,如int,float等.所以就可以通过它来获取本地c库 ...

  6. sizeof是c语言的一种运算符,C语言位运算和sizeof运算符详解

    位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的.位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果.位运算主要有 ...

  7. C语言指针、数组与sizeof运算符

    指针.数组与sizeof运算符 指针.数组与sizeof运算符 指针.数组与sizeof运算符 Sizeof是C语言的一个运算符,sizeof的作用是用来返回()里面的变量或者数据类型占用的内存字节数 ...

  8. C++ Prime:sizeof运算符

    sizeof运算符的结果部分地依赖于其作用的类型: 对char或者类型为char的表达式执行sizeof运算结果得1: 对引用类型执行sizeof运算得到被引用对象所占空间的大小: 对指针执行size ...

  9. sizeof运算符运算结果小汇

    文章目录 sizeof运算符的结果部分地依赖于其作用的类型 sizeof运算符的结果部分地依赖于其作用的类型 对char或者类型为char的表达式执行sizeof运算,结果得1 对引用类型执行size ...

最新文章

  1. python与excel的关系-使用python对excle和json互相转换的示例
  2. 人社部:截至三季度9757亿元养老保险基金到账运营
  3. 基于逆向最大化词表中文分词法zz
  4. php 怎么写原生sql,thinkphp 原生sql 怎么写?
  5. 为什么要设置Java环境变量(详解)
  6. The compiler compliance specified is 1.7 but a JRE
  7. RFID图书管理系统程序源代码(转)
  8. python高阶函数map_简单了解python高阶函数map/reduce
  9. 50-20-190-配置-Flink 配置文件详解-flink-conf.yaml
  10. LAPSUS$声称盗取源代码仓库,微软正在调查
  11. linux lamp实验报告,新手学Linux--构建lamp
  12. 在控制器控制方式中,异步控制与联合控制有什么区别?
  13. 【渝粤教育】国家开放大学2018年春季 0104-21T酒店安全管理 参考试题
  14. Atitit 图像金字塔原理与概率 attilax的理解总结qb23
  15. paip.为什么使用多线程的原因.
  16. Unity-UI-实现文本框内容自动滚动
  17. java发送邮件带图片和附件
  18. Linux on IBM Cloud - Port Knocking
  19. 数据结构(四)—— 线性表的链式存储
  20. krait和kryo_各种Java序列化性能比较

热门文章

  1. layui可以动态添加div吗_乳化剂是什么?可以添加到护肤品里吗?
  2. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
  3. 计算机真题11Excel,计算机网考真题EXCELPPT操作题答案(11页)-原创力文档
  4. 距离矢量算法matlab实现,一种基于最小费用距离模型的城市生态网络构建方法与流程...
  5. java三个技术平台_Java的3个平台有什么区别
  6. Jedis连接Redis读写基本操作
  7. This application is only supported on Windows 8.1, Windows Server 2012 R2, or hi gher.
  8. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
  9. MySQL5.6多实例安装
  10. 45.国际化-选择使用资源文件