当前位置: 首页 > 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运算符计算变量占内存空间

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

合法的表数范围不同

可参与的运算种类不同

讨论

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

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

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

相关文章:

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> 标签用来表示预格式化的文本内容 在页面数据展示时&#xff0c;后端返回了一段未经处理的JSON 数据&#xff0c;将这段数据在页面正常展示&#xff0c;让可读性更高。 {/"project": {/ "title": "…...

算法·动态规划Dynamic Programming

很多人听到动态规划或者什么dp数组了&#xff0c;或者是做到一道关于动态规划的题目时&#xff0c;就会有一种他很难且不好解决的恐惧心理&#xff0c;但是如果我们从基础的题目开始深入挖掘动规思想&#xff0c;在后边遇到动态规划的难题时就迎难而解了。  其实不然&#xff…...

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

当路由进行切换时&#xff0c;可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 属性 名称参数参数描述…...

【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存储库支持建立在存储库中解释的核心存储库支持之上&#xff0c;利用由 Reactive REST客户端执行的 Reactive Elasticsearch Operations提供的操作。 Spring Data Elasticsear…...

堆排序(c语言)

文章目录 前言一.什么是堆二.向下调整算法三.堆排序的创建总结 前言 堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#x…...

开源IT自动化运维工具Ansible解析

Ansible 是一款开源的 IT 自动化工具&#xff0c;用于简化应用程序部署、配置管理、持续集成、基础设施即代码&#xff08;Infrastructure as Code, IaC&#xff09;和服务编排。它由 Michael DeHaan 创建&#xff0c;并在2012年首次发布&#xff0c;到2015年被红帽公司&#x…...

【C++】仿函数优先级队列反向迭代器

目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1&#xff09;priority_queue()/priority_queue(first, last) 2&#xff09;push&#xff08;x&#xff09; 3&#xff09;pop&#xff08;&#xff09; 4&#…...

UE4_调试工具_绘制调试球体

学习笔记&#xff0c;仅供参考&#xff01; 效果&#xff1a; 步骤&#xff1a; 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果&#xff1a;...

机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…...

探索.NET中的定时器:选择最适合你的应用场景

概述&#xff1a;.NET提供多种定时器&#xff0c;如 System.Windows.Forms.Timer适用于UI&#xff0c;System.Web.UI.Timer用于Web&#xff0c;System.Diagnostics.Timer用于性能监控&#xff0c;System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…...

5467: 【搜索】流浪奶牛

题目描述 吃不到饭的奶牛Bessie一气之下决定离开农场&#xff0c;前往阿尔费茨山脉脚底下的农场&#xff08;听说那儿的草极其美味&#xff09;投靠她的亲戚Jimmy。但是前往目的地的山路崎岖&#xff0c;Bessie又没有吃饭&#xff0c;她需要尽量保存体力&#xff0c;以最轻松的…...

spring boot整合elasticsearch实现查询功能

第一步、添加依赖&#xff08;注意版本对应关系&#xff09;根据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 编码&#xff0c;开 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文件&#xff0c;在末尾添加&#xff1a; rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…...

Request failed with status code 504,Gateway time out

问题描述&#xff1a; 部署在测试环境的项目在执行某功能时&#xff0c;后台程序在执行过程中&#xff0c;前端控制台在一分钟左右会报出Request failed with status code 504&#xff0c;Gateway time out异常。但是在本地开发环境会正常运行&#xff0c;并不会报出异常。 问题…...

四、Elasticsearch 进阶

自定义目录 4.1 核心概念4.1.1 索引&#xff08;Index&#xff09;4.1.2 类型&#xff08;Type&#xff09;4.1.3 文档&#xff08;Document&#xff09;4.1.3 字段&#xff08;Field&#xff09;4.1.5 映射&#xff08;Mapping&#xff09;4.1.6 分片&#xff08;Shards&#…...

海外云手机如何帮助亚马逊引流?

随着全球化的推进&#xff0c;出海企业和B2B外贸企业越来越注重海外市场的开拓&#xff0c;这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机&#xff0c;能够在单一芯片上多开几个…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...