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

Day2:语言数据类型和变量

1.数据类型介绍

所谓类型,就是指相似的数据所拥有的共同特征,例如整型,浮点型,字符型等等。编译器只有知道了数据的类型,才能知道怎么操作数据。数据类型是编程语言中用于定义变量或函数可以存储或处理的数据的种类。

1.1.字符型

字符的英文单词是character,在C语言中使用char表示字符类型。

1.2.整型

整型的英文单词是integer,在C语言中使用int表示整型类型。

1.3.浮点型

表示有小数部分的数字,在C语言中使用float来表示。

1.4.布尔类型

表示真或假,布尔类型的使用得包含头文件<stdbool.h>,取值是:true或false。用_Bool表示。

代码演示

_Bool flag = ture; if(flag) printf("i like c\n");

因为_Bool写起来太麻烦,后来C语言对其进行了优化,在头文件<stdbool.h>中重新定义了新名字bool

1.5各种数据类型的长度

每⼀种数据类型都有自己的长度,使⽤不同的数据类型,能够创建出长度不同的变量,变量长度的不同,存储的数据范围就有所差异。那什么是长度呢,长度就是数据类型在内存中占用的字节数。

常见数据类型的长度(64位系统)
数据类型通常长度(bytes)位数(bits)范围(大致)
char1字节8位-128到127
short2字节16位-32768到32767
int4字节32位-+21亿
long8字节64位-+9百亿亿
float4字节32位约7位小数
double8字节64位约15位小数
1.5.1sizeof操作符

sizeof是一个关键字,也是操作符,专门是用来计算sizeof的操作数的类型长度的,单位是字节(bytes)

sizeof操作符的操作数可以是类型,也可以是变量或表达式。如果是表达式的时候可以省略括号。

sizeof后面的表达式是不真实参与计算的,根据表达式的类型来得出大小。

sizeof计算结果是size_t类型的。

1.5.2数据类型长度

1.5.3sizeof中表达式不计算

从图中可知sizeof后面的表达式并没有计算,变量s打印出的值仍是12。b为int类型数据,1默认为int类型数据,b+1显然也是int类型数据。要将int类型数据存放到short类型数据(变量s)中就会发生截断,将int类型截断成short类型,其表达式类型仍然是short类型,sizeof计算其长度就是2个字节了。

sizeof在代码进行编译的时候,会根据表达式的结果的类型,确定类型的长度,而表达式真正要被运算和执行却要在程序运行期间才会发生,因为在编译期间就已经将sizeof处理掉了,所以在程序运行期间不会执行表达式,也就打印不出表达式运行的结果了。

2.signed和unsigned

C语言使用signed和unsigned关键词修饰字符型和整型类型的。

signed关键词表示一个类型带有正负号,包含负值

unsigned关键词表示该类型不带有正负号,只能表示零和正整数

int等同于signed int

字符本身没有正负,但它在内存里最终只是一个整数(ASCII码),可以按照有符号整数解释。例如把这块内存解释为signed char时编译器就把它当成带符号的八位整数。

同一串二进制11111111因为有无正负号而表示不同

整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表示的最⼤整数值,增⼤了⼀倍。 ⽐如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽ unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65535。

3.数据类型的取值范围

4.变量

4.1变量的创建

C语言中把经常变换的值称为变量,不变的值叫常量。类型是用来创建变量的,声明变量为某个特定的类型。

变量创建的语法形式:

变量命名的一般规则:

  1. 只能由字⺟(包括⼤写和⼩写)、数字和下划线(`_`)组成。
  2. 不能以数字开头。
  3. ⻓度不能超过63个字符。
  4. 变量名中区分⼤⼩写的。
  5. 变量名不能使⽤关键字。

变量在创建的时候就给一个初始值,就叫初始化。

而创建好变量后再给他一个值叫做赋值

float score; score=20.0f//赋值

如果创建变量后没有初始化,打印出的值为随机数

4.2变量的分类

全局变量:在大括号外部定义的变量就是全局变量,其使用范围更广,整个工程中想使⽤,都是有办法使用的。

局部变量:在⼤括号内部定义的变量就是局部变量 局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

全局如果不初始化,编译器会指定为零,局部变量不初始化值随机。

当全局变量和局部变量的名字相同时,局部优先使用

变量创建的本质是向内存申请空间。

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是⽤来动态内存管理的
http://www.rkmt.cn/news/132834.html

相关文章:

  • Excalidraw思维导图玩法:结构化思考新工具
  • Excalidraw常见问题汇总:官方FAQ精华整理
  • 基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)
  • Excalidraw热力图模拟:用户行为分布示意
  • 递归算法和回溯算法
  • 跟着Datawhale动手学Ollama - TASK4: Ollama 在 LangChain 中的使用
  • 分层模糊系统:梯度下降与递推最小二乘法联合辨识研究(Matlab代码实现)
  • cesium126,240506,Ce for Ue 建筑单体高亮的实现P1-基础染色:
  • Excalidraw用户体验监控:前端性能指标采集
  • Excalidraw类图绘制:面向对象设计辅助
  • 基于Spring Boot技术的数字乡村农作物智慧管理系统设计毕设
  • A server error occurred. Please contact the administrator的问题解决
  • 基于Spring Boot的医院预约挂号系统的设计与实现毕业设计源码
  • PyTorch中通过设置随机种子使训练结果可复现
  • ExcalidrawOKR目标看板:团队目标对齐工具
  • 基于Spring Boot的在线考试系统设计与实现毕业设计
  • 2025年度绵阳高中复读学校口碑推荐榜单,名办高中/学校/实验中学/高中复读学校/中学/实验学校/高中高中复读学校企业怎么选择 - 品牌推荐师
  • 利用 SSI-COV 算法自动识别线状结构在环境振动下的模态参数研究(Matlab代码实现)
  • 精品UI知识付费系统源码 响应式视频教程知识付费软件下载网站模板
  • 基于Spring Boot的新生报到管理系统的设计与实现毕业设计源码
  • ATTCK实战系列(一)红日靶场1
  • Excalidraw CI/CD流水线搭建:代码变更自动部署
  • 蓝凌EKP产品:一次 Hibernate 乐观锁 + 死锁的深度踩坑实录
  • Excalidraw负载均衡配置:高并发场景下的稳定性保障
  • 基于Java+SpringBoot+SSM音乐推荐系统(源码+LW+调试文档+讲解等)/音乐推荐算法/音乐智能推荐/歌曲推荐系统/音乐个性化推荐/音乐播放推荐
  • springboot高校应届毕业生求职招聘系统vue_12wlz
  • 为什么你的努力领导看不到?是你不会向上管理,想要优秀,至少要做到第三层级
  • Excalidraw网格与参考线设置:提升对齐精度
  • 官网-工伤保险条例
  • 018.递归分治