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运算符计算变量占内存空间

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

合法的表数范围不同

可参与的运算种类不同

讨论

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter-基础元件使用(二)

一、Jmeter属性 当我们想要在不同线程组中使用某变量,就需要使用属,此时Jmeter属性的设置需要函数来进行set和get操作 1.创建set函数 2.然后采用Beanshell取样器进行函数执行 3.调用全局变量pro_id 4.将上面生成的函数字符串粘贴到另一个线程组即可…

QB PHP 多语言配置

1: 下载QBfast .exe 的文件 2: 安装的时候 ,一定点击 仅为我 安装 而不是 所有人 3: 如果提示 更新就 更新 , 安装如2 4: 如果遇到 新增 或者编辑已经 配置的项目时 不起作用 : 右…

onnx 推理报错 Process finished with exit code 139

onnxruntime可以导出模型,但使用onnx推理时程序异常退出如下: Process finished with exit code 139 推理时使用了以下模板,执行到ort_session.run后就会异常错误码退出。 import onnxruntime onnx_file_name "xxxxxx.onnx" ort_…

登高望远 儒风泰山 | 泰山酒业儒风泰山高端系列新品亮相云端

“尊敬的各位旅客大家上午好,很高兴与您相聚在万米云端,本次航班由泉城济南飞往天府之国成都......”3月16日,伴随着乘务长优美的声音,山东航空携手泰山酒业打造的“登高望远 儒风泰山”儒风泰…

Redis设计原理简介

键值存储模型: Redis是一个基于内存的键值对存储系统,它支持五种基本数据结构(字符串String、哈希Hash、列表List、集合Set、有序集合Sorted Set)以及几种高级数据结构如Bitmaps、HyperLogLogs等。 单线程架构: Redis采…

【刷题】滑动窗口入门

送给大家一句话: 那脑袋里的智慧,就像打火石里的火花一样,不去打它是不肯出来的。——莎士比亚 滑动窗口入门 认识滑动窗口Leetcode 209. 长度最小的子数组题目描述算法思路 Leetcode 3. 无重复字符的最长子串题目描述算法思路 Leetcode 1004…

Python数据结构实验 顺序表的实现

一、实验目的 1.掌握用Python定义线性表的顺序存储类型; 2.掌握用Python调试顺序表的基本方法; 3.掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现; 二、实验环境…

首页效果炫酷的wordpress免费主题模板

视频背景免费WP主题 简洁大气的视频背景wordpress主题,找大视频背景的主题可以看看这个。 https://www.wpniu.com/themes/193.html 红色全屏大图WP主题 非常经典的一款免费wordpress主题,红色全屏大图满足多行业使用。 https://www.wpniu.com/themes…

sqli-labs训练平台靶场详解!!!!

sqli-labs 是一个专业的 SQL 注入练习平台,该平台包含常见的注入类型,环境共有65个 SOL 注入漏洞,旨在帮助Web安全学习者对SQL注入漏洞有一个全面的了解。 项目地址为:GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based…

JAVA多线程之同步

文章目录 1. wait/notify1.1 基本使用1.2 优化使用 2. Park & Unpark2.1 基本使用2.2 基本原理 3. 线程状态4. 活跃性4.1 死锁4.1.1 死锁介绍4.2.2 死锁定位 4.3 活锁4.4 饥饿 锁的使用,其实就是为了使用临界资源的时候来进行同步,即一个线程用完一个…

【哈希表】算法例题

目录 五、哈希表 39. 赎金信 ① 40. 同构字符串 ① 41. 单词规律 ① 42. 有效的字母异位词 ① 43. 字母异位词分组 ② 44. 两数之和 ① 45. 快乐数 ① 46. 存在重复元素 ① 47. 最长连续序列 ② 五、哈希表 39. 赎金信 ① 给你两个字符串:ransomNote 和 m…

MySQL中replace into详解、批量更新、不存在插入存在则更新、replace into的坑

文章目录 一、replace into原理二、replace into的三种形式三、replace into 使用案例3.1、replace into values3.1.1、只有主键且主键冲突3.1.2、有主键有唯一索引且主键冲突3.1.3、有主键有唯一索引且唯一索引冲突(有坑)3.1.4、有主键有唯一索引且与一条主键冲突与另一条唯一…

阿里云2核4g服务器支持多少人同时在线?意想不到

阿里云2核4G服务器支持多少人在线?阿里云服务器网账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,搭建网站的话支持日均2000IP访问。 阿里云2核4G服务器多少钱一年?2核4G5M带宽…

【Linux更新驱动、cuda和cuda toolkit】

目录 1. 更新显卡驱动1.1. 查看当前显卡驱动版本1.2. 删除原始显卡驱动1.3. 删除CUDA Toolkit1.4. 在NVIDIA官网找到2080Ti对应的最新驱动程序 2. 更新CUDA Toolkit2.1. 下载CUDA Toolkit2.2. 安装.run2.3. 添加环境变量2.4. 检查是否安装好了 最近需要更新服务器的显卡驱动和C…

AI助手 - 月之暗面 Kimi.ai

前言 这是 AI工具专栏 下的第四篇,这一篇所介绍的AI,也许是截至今天(204-03-19)国内可访问的实用性最强的一款。 今年年初,一直看到有人推荐 Kimi,不过面对雨后春笋般的各类品质的AI,说实话也有…

YOLOv9改进策略:卷积魔改 | AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

💡💡💡本文改进内容: YOLOv9如何魔改卷积进一步提升检测精度?AKConv 通过不规则卷积运算完成高效特征提取的过程,为卷积采样形状带来更多探索选择。 AKConv可以作为即插即用的卷积运算来替代卷积运算来提高…

修复打印机不能打印的10种方法,总有一种适合你

前言 技术有时很奇怪,我们可以用声音控制恒温器,但有时打印机会像15年前一样令人困惑和不可靠。如果打印机向你抛出错误(或完全忽略你的要求),可能有许多原因。 不幸的是,仅仅找出问题才成功一半,另一半是解决方案,它将使你的打印机重新工作。下面是如何解决问题的方…

Mysql:行锁,间隙锁,next-key锁?

注:以下讨论基于InnoDB引擎。 文章目录 问题引入猜想1:只加了一行写锁,锁住要修改的这一行。语义问题数据一致性问题 猜想2:要修改的这一行加写锁,扫描过程中遇到其它行加读锁猜想3:要修改的这一行加写锁&…

STM32 CubeMx创建Lwip+FreeRtos时出现ping不通的问题

STM32 CubeMx创建LwipFreeRtos时出现ping不通 1、配置ETH,使用中断 2、配置Lwip(使用静态ip),其余什么都不用管 3、配置FreeRtos(选择V2版本),其余什么都不用管 4、创建代码 5、查看自动生…

python爬虫之xpath入门

文章目录 一、前言参考文档: 二、xpath语法-基础语法常用路径表达式举例说明 三、xpath语法-谓语表达式举例注意 四、xpath语法-通配符语法实例 五、选取多个路径实例 六、Xpath Helper安装使用说明例子: 七、python中 xpath 的使用安装xpath 的依赖包xm…