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运算符计算变量占内存空间
数据在内存中的存储形式不同
合法的表数范围不同
可参与的运算种类不同
讨论
计算机为什么采用浮点数而非定点数来表示实数?
浮点数是实数的精确表示吗?
既然浮点数相对于整数能够表示更大的数,那么是否可以用浮点数取代整数呢?
相关文章:
C数据类型(C语言)---变量的类型决定了什么?
目录 数据类型(Data Type) 变量的类型决定了什么? (1)不同类型数据占用的内存大小不同 如何计算变量或类型占内存的大小 (2)不同数据类型的表数范围不同 (3)不同类型…...
axios、axios二次封装、api解耦
import axios from axios// 环境的切换切换测试与生产环境 if (process.env.NODE_ENV development) { axios.defaults.baseURL /api; } else if (process.env.NODE_ENV debug) { axios.defaults.baseURL ; } else if (process.env.NODE_ENV production) { axios.…...
HTML 特殊元素:展示PDF、展示JSON 数据
<pre> 标签 (preformatted text) <pre> 标签用来表示预格式化的文本内容 在页面数据展示时,后端返回了一段未经处理的JSON 数据,将这段数据在页面正常展示,让可读性更高。 {/"project": {/ "title": "…...
算法·动态规划Dynamic Programming
很多人听到动态规划或者什么dp数组了,或者是做到一道关于动态规划的题目时,就会有一种他很难且不好解决的恐惧心理,但是如果我们从基础的题目开始深入挖掘动规思想,在后边遇到动态规划的难题时就迎难而解了。 其实不然ÿ…...
鸿蒙Harmony应用开发—ArkTS-转场动画(共享元素转场)
当路由进行切换时,可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 属性 名称参数参数描述…...
【C语言】循环语句(语句使用建议)
文章目录 **while循环****while循环的实践****补充:if语句与while语句区别****for循环(使用频率最高)****for循环的实践****while循环和for循环的对比****Do-while循环****break和continue语句****循环的嵌套****goto语句(不常用)****循环语句的效率(来自于高质量的C/C编程书籍…...
Spring Data访问Elasticsearch----响应式Reactive存储库
Spring Data访问Elasticsearch----响应式Reactive存储库 一、用法二、配置 Reactive Elasticsearch存储库支持建立在存储库中解释的核心存储库支持之上,利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。 Spring Data Elasticsear…...
堆排序(c语言)
文章目录 前言一.什么是堆二.向下调整算法三.堆排序的创建总结 前言 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于&#x…...
开源IT自动化运维工具Ansible解析
Ansible 是一款开源的 IT 自动化工具,用于简化应用程序部署、配置管理、持续集成、基础设施即代码(Infrastructure as Code, IaC)和服务编排。它由 Michael DeHaan 创建,并在2012年首次发布,到2015年被红帽公司&#x…...
【C++】仿函数优先级队列反向迭代器
目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1)priority_queue()/priority_queue(first, last) 2)push(x) 3)pop() 4&#…...
UE4_调试工具_绘制调试球体
学习笔记,仅供参考! 效果: 步骤: 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果:...
机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…...
探索.NET中的定时器:选择最适合你的应用场景
概述:.NET提供多种定时器,如 System.Windows.Forms.Timer适用于UI,System.Web.UI.Timer用于Web,System.Diagnostics.Timer用于性能监控,System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…...
5467: 【搜索】流浪奶牛
题目描述 吃不到饭的奶牛Bessie一气之下决定离开农场,前往阿尔费茨山脉脚底下的农场(听说那儿的草极其美味)投靠她的亲戚Jimmy。但是前往目的地的山路崎岖,Bessie又没有吃饭,她需要尽量保存体力,以最轻松的…...
spring boot整合elasticsearch实现查询功能
第一步、添加依赖(注意版本对应关系)根据spring boot版本选择合适的版本 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.6.2</version></dependenc…...
白嫖阿里云程序员日历
https://developer.aliyun.com/topic/lingma/activities/202403?taskCode14508&recordId44f3187f7950776f494eec668a62c65f#/?utm_contentm_fission_1 「通义灵码 体验 AI 编码,开 AI 盲盒」 打开链接直接领就行了...
ubuntu20.04搭建rtmp视频服务
1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件,在末尾添加: rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...
Request failed with status code 504,Gateway time out
问题描述: 部署在测试环境的项目在执行某功能时,后台程序在执行过程中,前端控制台在一分钟左右会报出Request failed with status code 504,Gateway time out异常。但是在本地开发环境会正常运行,并不会报出异常。 问题…...
四、Elasticsearch 进阶
自定义目录 4.1 核心概念4.1.1 索引(Index)4.1.2 类型(Type)4.1.3 文档(Document)4.1.3 字段(Field)4.1.5 映射(Mapping)4.1.6 分片(Shards&#…...
海外云手机如何帮助亚马逊引流?
随着全球化的推进,出海企业和B2B外贸企业越来越注重海外市场的开拓,这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机,能够在单一芯片上多开几个…...
【LeetCode HOT100】54. 螺旋矩阵——模拟遍历与边界收缩双解法
题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: text 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: text 输入&…...
Zotero插件市场架构解析:构建一体化插件管理生态
Zotero插件市场架构解析:构建一体化插件管理生态 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons Zotero…...
CSS如何处理溢出隐藏_使用overflow-hidden与盒模型
overflow: hidden 失效主因是父容器无明确宽高或子元素脱离文档流;需触发BFC(如display: flow-root)、避免absolute/floating、注意iOS Safari兼容性及box-sizing对可用空间的影响。overflow: hidden 为什么没生效最常见的原因是父容器没有设…...
Java 面试题精讲:在分布式系统中集成 Stable Yogi 模型的设计思路
Java 面试题精讲:在分布式系统中集成 Stable Yogi 模型的设计思路 最近在面试高级Java工程师时,我特别喜欢问一个开放性的架构设计题:“假设我们要在一个大型电商平台的微服务架构里,集成一个类似Stable Diffusion的AI图像生成模…...
MATLAB代码实现锂电P2D模型,参数灵活可调并附详细注释解析,电化学与热耦合模型深度解析及...
matlab锂电P2D模型代码,参数可修改加详细注释,电化学热耦合模型,有实例一、工具box概述 LIONSIMBA是一款基于Matlab开发的锂离子电池仿真工具box,以有限体积法为核心,实现了锂离子电池设计、仿真与控制的全流程支持。其…...
3个颠覆性思维:如何用零代码将3D艺术变成Minecraft世界
3个颠覆性思维:如何用零代码将3D艺术变成Minecraft世界 【免费下载链接】ObjToSchematic A tool to convert 3D models into Minecraft formats such as .schematic, .litematic, .schem and .nbt 项目地址: https://gitcode.com/gh_mirrors/ob/ObjToSchematic …...
VS Code + LaTeX 从入门到入坑:手把手教你搭建高效论文写作环境
前言 最近,我一直在寻找一个免费、流畅、可离线的 LaTeX 写作方案。Overleaf 虽然方便,但一旦文档大了就卡得怀疑人生;本地用 Texmaker 或 TeXstudio,界面又太复古。直到我发现了 VS Code LaTeX Workshop 这套组合拳,…...
蓝桥杯单片机 | 实战解析【进阶04】基于24C02的按键次数掉电存储与动态显示系统
1. 项目背景与需求分析 在蓝桥杯单片机竞赛中,数据持久化存储是一个非常重要的考点。24C02作为一款经典的EEPROM芯片,经常被用来实现掉电不丢失的数据存储功能。这次我们要实现的功能是记录三个独立按键的触发次数,并且在系统断电后依然能够保…...
告别评估版限制:手把手教你用注册机激活Keil5 MDK(STM32开发环境搭建)
突破Keil5 MDK评估版限制的完整解决方案 在嵌入式开发领域,Keil MDK作为ARM处理器的主流开发环境,其评估版对代码大小的限制常常让开发者感到束手束脚。当你精心编写的STM32程序超过32KB时,那个刺眼的编译错误提示就像一堵无形的墙࿰…...
3分钟搞定Windows安卓应用安装:告别模拟器的终极指南
3分钟搞定Windows安卓应用安装:告别模拟器的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上运行Android应用…...
