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

news2024/12/23 22:06:33

目录

数据类型(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运算符计算变量占内存空间

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

合法的表数范围不同

可参与的运算种类不同

讨论

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1532425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】通过组件对齐评估和改进 text-to-SQL 的组合泛化

Measuring and Improving Compositional Generalization in Text-to-SQL via Component Alignment NAACL 2022| CCF B Abstract 在 text-to-SQL 任务中,正如在许多 NLP 中一样,组合泛化是一个重大挑战:神经网络在训练和测试分布不同的情况…

Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动)

Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动) 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************

选择word中的表格VBA

打开开发工具 选择Visual Basic插入代码 Sub 选择word中的表格() Dim t As Table an MsgBox("即将选择选区内所有表格,若无选区,则选择全文表格。", vbYesNo, "提示") If an - 6 Then Exit Sub Set rg IIf(Selection.Type wdSel…

FortiGuard Labs:2024网络安全威胁趋势及预测

如今,随着网络犯罪即服务(CaaS)市场规模的快速增长以及生成式人工智能(Generative AI)技术的横空出世,网络犯罪分子的攻击手段比以往更加便捷,甚至仅需“一次点击”即可轻松快速发动攻击。如此一…

故障诊断 | 一文解决,GRNN广义回归神经网络的故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,GRNN广义回归神经网络的故障诊断(Matlab) 专栏介绍

Crypto Gladiator League (CGL)

《加密角斗士》是一款完全链上游戏。所有角斗士、装备、代币等的生成过程都可以透明追溯。不可能被篡改或欺骗,使所有游戏物品都是真实资产。 CGL 现已升级为全链游戏平台和 Web3 游戏流量门户,通过多维度收集用户数据,并将数据应用于游戏中&…

手机运营商二要素检测:重塑信任基石,筑牢信息安全屏障

随着移动互联网的普及和数字经济的快速发展,用户信息安全的重要性日益凸显。运营商二要素检测作为一种强大的安全验证机制,以其精准匹配与实时验证的特性,为各类应用场景提供了一种可靠的身份识别解决方案,正在成为众多企业和服务…

Vue3 中应该使用 Ref 还是 Reactive?

一、引言 在Vue 3中,构建响应式数据结构是构建用户界面和交互体验的核心部分。而在创建这些响应式数据时,我们有两个主要工具:reactive和ref。选择使用哪一个,实际上取决于你的数据结构和访问需求。 reactive主要用于处理复杂的数…

初识 Selenium 测试框架

目录 什么是Selenium? Selenium有什么特点? Selenium Webdriver的工作原理什么? Selenium的使用前提 什么是Selenium? Selenium是一个针对web应用,基于UI的自动化的测试框架。 Selenium3.0包括 Selenium IDE&…

2024年第六届区块链与物联网国际会议(BIOTC 2024)即将召开!

2024年第六届区块链与物联网国际会议(简称:BIOTC 2024)将于2024 年 7 月 19 日至 21 日在日本福冈召开,旨在为来自行业、学术界和政府的研究人员、从业者和专业人士提供一个论坛,就研发区块链和物联网的专业实践进行交…

如何批量开展单因素COX回归分析形成表格?

在统计分析过程中,如果有生存时间数据,那么就需要用到生存分析,COX回归了! SPSS进行COX回归的操作简单,输出也快速,但只能逐个选入变量进行单因素回归,我们在实际分析中遇到的往往是多个变量进行…

鸿蒙Harmony应用开发—ArkTS-转场动画(组件内隐式共享元素转场)

geometryTransition用于组件内隐式共享元素转场,在组件显示切换过程中提供平滑过渡效果。通用transition机制提供了opacity、scale等转场动效,geometryTransition通过id绑定in/out组件(in指入场组件、out指出场组件),使得组件原本独立的trans…

演讲嘉宾公布 | 3D音频专题论坛将于3月27日举办

一、3D音频专题论坛 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验,跨越时空的限制,探索未知的世界。同时,提供更加丰富、立体的情感表达和交流方式,让人类能够更加深入地理解彼此,建立更加紧密的联系。3D音频未…

【NLP】TF-IDF算法原理及其实现

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! #学习笔记# 目录 01 TF-IDF算法介绍 02 TF-IDF应用 03 Sklearn实现TF-IDF算法 04 使用TF-IDF算法提取关键词 05 TF-IDF算法的不足 TF-IDF算法非常容易理…

uniapp使用Canvas给图片加水印把临时文件上传到服务器

生成的临时路径是没有完整的路径没办法上传到服务器 16:37:40.993 添加水印后的路径, _doc/uniapp_temp_1710923708347/canvas/17109238597881.png 16:37:41.041 添加水印后的完整路径, file://storage/emulated/0/Android/data/com.jingruan.zjd/apps/__UNI__BE4B000/doc/…

【大屏设计】如何进行软件系统网站大屏页面设计?不限于智慧城市、物联网、电商、园区领域

【大屏设计】如何进行软件系统网站大屏页面设计?不限于智慧城市、物联网、电商、园区领域 一、什么是网站大屏设计二、网站大屏设计原型素材三、网站大屏设计设计素材四、他山之石 一、什么是网站大屏设计 网站大屏设计是网站设计中至关重要的一部分,因…

Kafka生产者相关概念

文章目录 Kafka工作流程Kafka文件存储生产者分区策略生产者ISR生产者ack机制数据一致性问题ExactlyOnce Kafka工作流程 Kafka中消息是以topic进行分类的,Producer生产消息,Consumer消费消息,都是面向topic的。 Topic是逻辑上的概念&#xff…

【Godot4.2】实现简单时钟组件

概述 Godot的CanvasItem类型提供的绘图函数,以及向量旋转,玩起来很有意思。 基于_draw的实现 用向量旋转的方法,可以实现时钟的分针、时针、秒针的旋转。再通过每帧调用_draw更新绘图就可以让时钟动起来了。 当然我们还需要从Time单例那里…

Amuse .NET application for stable diffusion

Amuse github地址:https://github.com/tianleiwu/Amuse .NET application for stable diffusion, Leveraging OnnxStack, Amuse seamlessly integrates many StableDiffusion capabilities all within the .NET eco-system Welcome to Amuse! Amuse is a profes…

【Maven】使用maven-jar、maven-assembly、maven-shade优雅的实现第三方依赖一同打Jar包

文章目录 一.前言二.常规Jar 打包:maven-jar-plugin三.Shade 打包:maven-shade-plugin1.如何使用2.将部分jar包添加或排除3.将依赖jar包内部资源添加或排除4.自动将所有不使用的类排除5.将依赖的类重命名并打包进来 (隔离方案)6.修…