【玩转C语言】第二讲--->数据类型和变量

news2024/11/19 5:38:58

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

引言:

大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识,另外,还会不定时更新【C语言训练题库】,想学好C语言的宝子们,一定要收藏起来,一起努力吧!

点赞!收藏!以防以后找不到了!!!

目录

1. 数据类型介绍

1.1 字符型

 1.2 整型

1.3 浮点型

1.4 布尔类型

1.5 数据类型的长度

1.5.1 sizeof()操作符

1.5.2 数据类型长度

1.5.3 sizeof()中表达式不计算

2.signed 和 unsigned 

3. 变量

3.1 变量的创建

3.2 变量的分类

3.3 变量存储位置

 4. 算术操作符:+、-、*、/、%

4.1 + 和 -

4.2 * 和 /

4.2.1 *

4.2.2 /

4.3 %

5. 赋值运算符 = 和 复合赋值

5.1 连续赋值

5,2 复合赋值

6. 单目操作符 ++,--,+,-

6.1 ++ 和 --

6.1.1 前置++

6.1.2 后置++

7. 强制类型转换

8. 小结


1. 数据类型介绍

C语言提供了丰富的数据类型来描述生活中的各种数据

所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,知道怎么操作数据

下面盘点一下C语言提供的各种数据类型,本章节主要探讨内置数据类型

1.1 字符型

char ch;             //字符型
signed char ch;      //有符号字符型
unsigned char ch;    //无符号字符型

 1.2 整型

//短整型
short int
signed short int
unsigned short int

//整型
int
signed int
unsigned int

//长整型
long int
long long int
signed long int
signed long long int
unsigned long int
unsigned long long int

1.3 浮点型

float   //单精度
double  //双精度

1.4 布尔类型

使用布尔类型要包含头文件--->  <stdbool.h>

布尔类型的取值范围是 turn 和 false

#define bool _Bool   //布尔类型定义

#define turn 1
#define false 0

1.5 数据类型的长度

每一种数据类型都有自己的长度,不同的数据类型可创造出不同的长度的变量,不同的数据类型的存储都有差异

1.5.1 sizeof()操作符

sizeof() 是一个关键字,也是操作符,注意:它并不是库函数

sizeof() 操作符的操作数可以是类型,也可是变量或者表达式

sizeof(类型)
sizeof 表达式

注意: 

  1. sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的
  2. sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小

1.5.2 数据类型长度

 

类型                 字节(单位)
char                    1
bool                    1
short                   2
int                     4
long                    4        C语言标准规定:long>=int
long long               8
float                   4
double                  8
long double             8        C语言标准规定:long double>=double

1.5.3 sizeof()中表达式不计算

#include <stdio.h>
int main()
{
 short s = 2;
 int b = 10;
 printf("%d\n", sizeof(s = b+1));
 printf("s = %d\n", s);
 return 0;
}

结果

 

2.signed 和 unsigned 

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

  • signed 表示带有符号的数,可表示正数负数
  • unsigned 表示没有符号的数,仅表示 0 和 正数

注意:C语言规定 char 类型默认是否带有正负号,由当前系统决定

3. 变量

3.1 变量的创建

C语言中把经常变化的值称为变量,不变的值称为常量

int ret; //整型变量 
char ch; //字符变量 
double dh; //浮点型变量 

在创建的时候就给⼀个初始值,就叫初始化

int ret = 100; 
char ch = 'w'; 
double dh = 0.5; 

3.2 变量的分类

  • 全局变量:在大括号外部定义的变量就是全局变量
  • 局部变量:在大括号内部定义的变量就是局部变量
#include <stdio.h>

int a = 10;    //全局变量

int main()
{
	int b = 100;   //局部变量
	printf("%d", a);
	printf("%d", b);
	return 0;
}

如果局部和全局变量名字相同

#include <stdio.h>

int a = 10;    //全局变量

int main()
{
	int a = 100;   //局部变量
	printf("%d", a);
	return 0;
}

结果打印  a=100;

其实当局部变量和全局变量同名的时候,局部变量优先使用

3.3 变量存储位置

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是⽤来动态内存管理的(后期会介绍)

 4. 算术操作符:+、-、*、/、%

4.1 + 和 -

+ 和 - 有两个操作数,也被称为双目操作符,用来计算加法和减法

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int c = a + b;
	int d = a - c;
	printf("%d\n", c);
	printf("%d\n", d);
	return 0;
}

4.2 * 和 /

4.2.1 *

用来计算乘法

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int c = a * b;
	printf("%d\n", c);
	return 0;
}

4.2.2 /

用来计算除法,不过当 / 两边都为整数时,结果也为整数 例:

#include <stdio.h>

int main()
{
	int a = 10 / 4;       //结果为 2
	int b = 10 / 4.0;     //结果为 2.5
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

4.3 %

取模运算符,意思是求余数

#include <stdio.h>

int main()
{
 int x = 6 % 4; //结果为 2
 return 0;
}

5. 赋值运算符 = 和 复合赋值

注意:赋值和初始化是不一样的

int a = 100;   //初始化
a = 200;       //赋值

5.1 连续赋值

赋值操作可以连续

a = 10;
b = 20;
c = 30;

5,2 复合赋值

在写代码时,我们经常可能对⼀个数进行自增、自减的操作,如下代码

a = a + 3;
b = b - 8;

这样代码C语言给提供了更加方便的写法

a += 3;
b -= 8;

//复合赋值符

  +=   -=

6. 单目操作符 ++,--,+,-

6.1 ++ 和 --

  • ++是⼀种自增的操作符,又分为前置++和后置++
  • --是⼀种自减的操作符,也分为前置--和后置--

6.1.1 前置++

int a = 10;
int b = ++a;
printf("%d",b);

口诀:先加一,后计算

a 先加一 为 11,在赋值给 b , 最后 b为11 ,a 最后也为 11

6.1.2 后置++

int a = 10;
int b = a++;
printf("%d",b);

口诀:先计算,后加一

a 为 10 ,先计算,那 b 就为 10,计算之后,a 在加一,最后,b 为10,a 为 11

前置 -- 和后置 -- 和++用法一样

7. 强制类型转换

在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单,形式如下

float a = 3.14;
int b = (int)a;    //强制转换为整型

//结果 b = 3;

俗话说,强扭的瓜不甜,我们使⽤强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样自然更好的

8. 小结

 以上就是关于【玩转C语言】第二讲的内容了,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持!

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

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

相关文章

centos7环境下安装wine,运行.exe可执行程序

centos7环境下安装wine,运行.exe可执行程序 步骤一&#xff1a;先安装两个扩展 &#xff08;1&#xff09; yum groupinstall ‘Development Tools‘ &#xff08;2&#xff09; yum install libX11-devel freetype-devel zlib-devel libxcb-devel 步骤二&#xff1a; 命令行…

ADASIS V2 协议-1

ADAS V2协议-1 1 简介2 版本控制3 ADASIS v23.1 ADASIS v2 Horizon &#xff08;地平线&#xff09;3.2 ADASIS v2的构建3.3 ADASIS v2 Horizon Provider &#xff08;ADAS V2地平线提供者&#xff09;3.4 paths and offsets &#xff08;路径和偏移量&#xff09;3.5 Path Pro…

【设计模式深度剖析】【1】【行为型】【模板方法模式】| 以烹饪过程为例加深理解

&#x1f448;️上一篇:结构型设计模式对比 | 下一篇:命令模式&#x1f449;️ 设计模式-专栏&#x1f448;️ 文章目录 模板方法模式定义英文原话直译如何理解呢&#xff1f; 2个角色类图代码示例 应用优点缺点使用场景 示例解析&#xff1a;以烹饪过程为例类图代码示例…

国自然基金的检索

&#xff08;1&#xff09;网址 跳转国自然基金网址&#xff1a;https://www.nsfc.gov.cn/ &#xff08;2&#xff09;查询入口 &#xff08;3&#xff09;进行查询

贪心算法-数组跳跃游戏(mid)

目录 一、问题描述 二、解题思路 1.回溯法 2.贪心算法 三、代码实现 1.回溯法实现 2.贪心算法实现 四、刷题链接 一、问题描述 二、解题思路 1.回溯法 使用递归的方式&#xff0c;找到所有可能的走步方式&#xff0c;并记录递归深度&#xff08;也就是走步次数&#x…

fastadmin/thinkPHPQueue消息队列详细教程

thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行1、通过composer安装thinkPHP消息队列 …

实验笔记之——DPVO(Deep Patch Visual Odometry)

本博文记录本文测试DPVO的过程&#xff0c;本博文仅供本人学习记录用~ 《Deep Patch Visual Odometry》 代码链接&#xff1a;GitHub - princeton-vl/DPVO: Deep Patch Visual Odometry 目录 配置过程 测试记录 参考资料 配置过程 首先下载代码以及创建conda环境 git clo…

大漠插件7.2422

工具名称:大漠插件7.2422 /更新时间2024年6月2日 / v7.2422 1. 综合工具的图像编辑工具可以缩放窗口了 2. 增加AiFindPic AiFindPicEx AiFindPicMem AiFindPicMemEx AiEnableFindPicWindow 共5个接口 / 工具简介: 大漠 综合 插件 (dm.dll)采用vc6.0编写&#xff0c;识别速度超级…

网络编程: reactor模式的步步探索与实现

网络编程: reactor模式的步步探索与实现 一.步步探索1.先看一下之前的BUG的影响2.解决拼接式读取问题3.进一步的探索4.Connection的提出5.EpollServer的修改并将监听套接字添加进去6.小演示 二.协议与业务登场1.协议,业务,解决粘包,序列反序列化等等的函数模块实现2.读写异常事…

推荐使用优豆云免费云服务器、免费虚拟主机

官网地址&#xff1a;https://www.udouyun.com 经济实惠&#xff1a;相较于其他云服务器提供商&#xff0c;优豆云服务器提供免费的云服务&#xff0c;对于一些预算有限的个人和初创企业来说&#xff0c;是一个不错的选择。操作便捷&#xff1a;优豆云服务器提供了Linux和Wind…

智能视频监控平台LntonCVS视频融合共享平台保障露营安全解决方案

在当今社会&#xff0c;都市生活的快节奏和压力使得越来越多的人渴望逃离城市的喧嚣&#xff0c;寻求一种短暂的慢生活体验。他们向往在壮丽的山河之间或宁静的乡村中露营&#xff0c;享受大自然的宁静与美好。随着露营活动的普及&#xff0c;露营地的场景也变得更加丰富多样&a…

YOLOv8---seg实例分割(制作数据集,训练模型,预测结果)

YOLOv8----seg实例分割&#xff08;制作数据集&#xff0c;训练模型&#xff0c;预测结果&#xff09; 内容如下&#xff1a;【需要软件及工具&#xff1a;pycharm、labelme、anaconda、云主机&#xff08;跑训练&#xff09;】 1.制作自己的数据集 2.在yolo的预训练模型的基础…

【scau大数据技术与原理2】综合性实验Spark集群的安装和使用——安装启动spark shell篇

实验内容简介&#xff1a; Spark是一个分布式计算框架&#xff0c;常用于大数据处理。本次实验中&#xff0c;首先设计一个包含主节点和从节点的Spark集群架构&#xff0c;并在CentOS的Linux环境下进行搭建。通过下载并解压Spark安装包&#xff0c;配置环境变量和集群参数&…

问题:学生品德不良的矫正与教育可以采取以下措施()。 #其他#学习方法#微信

问题&#xff1a;学生品德不良的矫正与教育可以采取以下措施()。 A、创设良好的交流环境,消除情绪障碍 B、提高道德认识,消除意义障碍 C、锻炼学生与诱因作斗争的意志力 D、消除习惯惰性障碍 E、发现积极因素,多方法协同进行,促进转化 参考答案如图所示

BPMN开始事件-Activiti7从入门到专家(7)

开始事件类型 bpmn开始事件表示流程的开始&#xff0c;定义流程如何启动&#xff0c;在某种情况下启动&#xff0c;比如接收事件启动&#xff0c;指定事件启动等&#xff0c;开始事件有5种类型&#xff1a; 空开始事件定时器开始事件信号开始事件消息开始事件错误开始事件 继…

Java | Leetcode Java题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; class Solution {public int longestConsecutive(int[] nums) {Set<Integer> num_set new HashSet<Integer>();for (int num : nums) {num_set.add(num);}int longestStreak 0;for (int num : num_set) {if (!num_set.contai…

90后机器人创业者再获10亿元融资,为精密传动行业注入新动力!

据了解&#xff0c;一位90后机器人创业者再次获得近10亿元人民币的融资&#xff0c;这一消息在精密传动行业引起了广泛关注。 杭州宇树科技有限公司&#xff08;简称“宇树”&#xff09;&#xff0c;2024年春节前完成了B2轮融资&#xff0c;融资近10亿元人民币&#xff0c;本轮…

立创·天空星开发板-GD32F407VE-EXTI

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子&#xff0c;记录学习笔记。 立创天空星开发板-GD32F407VE-EXTI 中断硬件触发中断示例软件触发中断示例 中断 中断分为内部中断和外部中断 外部中断是由外部设备&#xff08;如按键、传感器、通信接口等&#xff09…

【FAS】《CN103106397B》

原文 CN103106397B-基于亮瞳效应的人脸活体检测方法-授权-2013.01.19 华南理工大学 方法 / 点评 核心方法用的是传统的形态学和模板匹配&#xff0c;亮点是双红外发射器做差分 差分&#xff1a;所述FPGA芯片控制两组红外光源&#xff08;一近一远&#xff09;交替亮灭&…

硬件IIC和软件IIC的比较

&#xff08;一&#xff09;硬件IIC 硬件IIC是由STM32内部的硬件模块实现的&#xff0c;使用CPU的时钟信号来控制数据传输和时序&#xff0c;通信速度较快&#xff0c;可以达到几十MHz的速度。硬件IIC的实现相对简单&#xff0c;无需编写复杂的代码&#xff0c;因此在实现IIC通…