当前位置: 首页 > news >正文

C数据类型(C语言)---变量的类型决定了什么?

目录

数据类型(Data Type)

变量的类型决定了什么?

(1)不同类型数据占用的内存大小不同

如何计算变量或类型占内存的大小

(2)不同数据类型的表数范围不同

(3)不同类型数据的存储形式不同

整型数

定点数与浮点数

字符型数据(英文字母、数字、控制字符)

(4)不同数据类型可参与的运算不同

整型

实型

字符型

指针类型

小结

不同类型的变量

讨论


数据类型(Data Type)

在冯·诺依曼体系结构中

*程序代码和数据都是以二进制存储的

*对计算机系统和硬件本身而言,数据类型的概念并不存在

问题:高级语音为什么要区分数据类型?

*更有效地组织数据,规范数据的使用

*有助于提高程序的可读性,方便用户的使用

在程序设计语音中引入数据类型的好处

*带来了程序的简明性和数据的可靠性

*有助于提高程序执行效率、节省内存空间

变量的类型决定了什么?

*占用内存空间的大小

*数据的存储形式

*合法的表数范围

*可参与的运算种类

(1)不同类型数据占用的内存大小不同

int ——基本整型,C标准未规定,系统相关

*在目前大多数系统上占4个字节

short int ,简写为short

 *短整型,2个字节

long int,简写为long

*长整型,4个字节

unsigned——无符号整型(正整数和0)

*用来修饰int、short和long

float

*单精度实型,4个字节

double

*双精度实型,8个字节

long double

*长双精度实型,IEEE规定10个字节,系统相关

*VC++中占8个字节

char 

*字符型,1个字节

注意:绝对不能对变量所占的内存字节数想当然

如何计算变量或类型占内存的大小

问题:如何计算变量占内存空间的大小?

sizeof运算符

一元运算符

sizeof运算符计算变量占内存空间的大小的好处

增加程序的可移植性

编译时执行的运算符,不会导致额外的运行时间开销

一般形式:

语法形式运算结果
sizeof(类型)类型占用的内存字节数
sizeof(变量或表达式)变量或表达式所属类型占的内存字节数

(2)不同数据类型的表数范围不同

有符号和无符号整数的表数范围也不同

以2字节(16位)短整型为例

*有符号整数的最高位是符号位,使其数据位无符号整数的数据位少了1位

*有符号整数能表示的最大整数的绝对值仅为最大无符号整数的一半

(3)不同类型数据的存储形式不同

整型数

一个多字节的数据是如何存放到存储单元中的呢?

高位字节地位字节

小端次序(Little-endian)

便于计算机从低位字节向高位字节运算

···

低位字节

高位字节
···

大端次序(Big-endian)

与人们从左到右的书写顺序相同,便于处理字符串

···
低位字节
高位字节
···

问题:如何存储实型数呢?

关键:确定小数点的位置

问题:如何表示实型数?

小数形式

指数形式——科学计数法

整数部分小数部分

定点数(Fixed Point)

小数点的位置固定

定点整数

定点小数

定点数与浮点数

定点小数(纯小数)——小数点位于符号位和最高数值位之间

定点整数——小数点位于数值位的最低位

问题:如何表示实型数?

小数形式

整数部分小数部分

指数形式——科学计数法

指数部分小数部分

浮点数实现小数点位置可浮动的主要原因

将实数拆分成了阶码(Exponent)尾数(Mantissa)分别存储

对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大

同样是4个字节(32位)

  *定点数表数范围受其二进制位数的限制——值域都是有限的

在计算机中通常是用定点数来表示整数和纯小数

浮点数表示既有整数部分、又有小数部分的实数

字符型数据(英文字母、数字、控制字符)

以二进制编码方式存储,一个字节保存一个字符

字符编码方式

*取决于计算机系统所使用的字符集

*ASCII(美国标准信息交换码)字符集

*每个字符有一个编码值(查ASCII码表)

*字符常数就是一个普通整数

(4)不同数据类型可参与的运算不同

整型

*加、减、乘、除、求余

实型

*加、减、乘、除

字符型

*加、减(整数)

*对ASCII码值的运算

指针类型

*加、减(整数)和比较运算

小结

不同类型的变量

占用内存空间的大小不同

       *用sizeof运算符计算变量占内存空间

数据在内存中的存储形式不同

合法的表数范围不同

可参与的运算种类不同

讨论

计算机为什么采用浮点数而非定点数来表示实数?

浮点数是实数的精确表示吗?

既然浮点数相对于整数能够表示更大的数,那么是否可以用浮点数取代整数呢?

相关文章:

  • cannot find -xml2: No such file or directory的解决方法
  • 汇编语言中的MVC
  • 阿里云轻量应用服务器和ECS服务器有啥区别?2024年整理对比表
  • webpack从零开始搭建vue项目
  • void QLayout::addItem(QLayoutItem *item)
  • 第四章 网络层——练习题、408真题
  • uniapp——第3篇:自定义组件、组件间传数据
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • RabbitMQ详细讲解
  • Debezium vs OGG vs Tapdata:如何实时同步 Oracle 数据到 Kafka 消息队列?
  • Python每日三道经典面试题(十七)
  • 物联网的介绍
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(四)
  • 个人商城系统开源(配置支付宝支付2)
  • 提供数字免疫力:采取整体方法来优化您的网络
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【React系列】如何构建React应用程序
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • HTTP中的ETag在移动客户端的应用
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS 面试题总结
  • Octave 入门
  • python_bomb----数据类型总结
  • 对超线程几个不同角度的解释
  • 分布式熔断降级平台aegis
  • 分享一份非常强势的Android面试题
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 观察者模式实现非直接耦合
  • 前端面试之闭包
  • 如何选择开源的机器学习框架?
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 通过npm或yarn自动生成vue组件
  • 主流的CSS水平和垂直居中技术大全
  • ​一些不规范的GTID使用场景
  • (C#)一个最简单的链表类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (java)关于Thread的挂起和恢复
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (算法二)滑动窗口
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)可以带来幸福的一本书
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core 项目指定SDK版本
  • .NET Core引入性能分析引导优化
  • .NET 服务 ServiceController
  • .net6Api后台+uniapp导出Excel
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net经典笔试题
  • .NET中两种OCR方式对比
  • @Data注解的作用
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——