首页 > 其他分享 >22级五年制C语言入门教程-(3)基本数据类型

22级五年制C语言入门教程-(3)基本数据类型

时间:2024-09-11 16:13:41浏览次数:10  
标签:22 int 浮点数 float 数据类型 五年制 char 类型 void

1.数据类型

在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。C语言数据类型可以分为四种:

  • 1.基本类型:
    它们是算术类型,包括两种类型:整数类型和浮点类型。
  • 2.枚举类型
    它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
  • 3.void 类型:
    类型说明符 void 表明没有可用的值。
  • 4.派生类型:
    它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。

本节内容主要学习的是基本类型,以及简单的介绍一下void类型。其他的类型在后续的章节中,将会慢慢的接触到,不用太担心。

2.整数类型

2.1 int型

int类型,就是没有小数的部分,比如2、500、0、-100。
用法如下:

int timoHp = 586;//timo的血量是586;

2.2 char型

char类型用于存放一个字符,值用两个单引号''来表示 (双引号表示字符串)。编程语言通过使用字母的数值编码来解决字母的存储,因此char类型是另一种整型。字符集的字符用数值编码(ASCII码)表示。例如,字符'A'的编码是65,字符'B'的编码是66。
用法如下:

//char 只能存放一个字符,超过一个字符就会产生编译错误
char c = 'a'; 
char c1 = '盖';
char c2 = '伦'; 

2.3 bool型

在计算中,bool变量的值可以是true或false。我们经常将非零值解释为true,将零解释为false。举一个简单的例子,我们可以这样编写语句:

bool timoLive = true;

字面值true和false都可以通过提升类型转换为int类型,true被转换为1,而false被转换为0:

int timoLive = true;//stick的值是1
int timoKill = false;//egg的值是0

另外,任何非零值都可以转换为true,而非零被转换为false:

bool timoHp = 586;//timoHp的值是true
bool timoSpeed = -10;//timoSpeed的值是true
bool timoAttack = 0;//timoAttack的值是false

3.浮点类型

浮点数能够表示带小数部分的数字,它们的表示范围也更大。浮点数在计算机中的存储分两部分,一部分表示值,另一部分用于对值进行放大或缩小。举个简单的例子来帮助大家理解计算机中的浮点数,比如说过情人节了,我们给女朋友发个红包表示一下心意。我们需要表示的数额分别是13.14和1314,它们除了小数点的位置不同外,其他都是相同的(帮你们找了一个极好的借口)。至少计算机是这样看的,至于女朋友怎么看~~~在计算机中,第一个数可以表示为0.1314(基准数)和100(缩放因子),第二个数可以表示为0.1314(基准数)和10000(缩放因子)。缩放因子的作用就是移动小数点的位置,这其实也是浮点数术语的来源。计算机中的实际表示其实不是这样的十进制,而是基于二进制,这里我们简单的明白这个原理就行了。

3.1 书写浮点数

浮点数的书写方法有两种,一种是我们使用的标准小数点表示法:
3.14
5.0
0.52
第二种是E表示法:
3.14E+2
1.26e-4
5E6
-20.18E10
3.14E+2
上面的数字就是E表示法,比如说3.14E+3,这里的意思是3.14的小数点向右移动3位。其中前面的符号位可以是正号(+)或者负号(-),小数点也是可选的,可以使用E或者e,后面的符号可以是+、-或者省略,后面的数字代表移动的位数。

3.2 单精度浮点数(float)和双精度浮点数(double)

浮点数根据范围和精度不同分为两种:单精度浮点数(float)和双精度浮点数(double)。一般来说,处理单精度浮点数的速度比处理双精度浮点数快。

  • 单精度浮点数一般占4个字节,32位。单精度浮点数1位符号位,8位指数,23位小数。float的小数位只有23位,能表示的最大十进制数为2的23次方,即8 388 608,相当于十进制的7位,严格点说,精度只能百分百的保证十进制的6位。所以我们一般说有效数字是8位。单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38。
  • 双精度浮点数一般占8个字节,64位。双精度浮点数1位符号位,11位指数,52位小数。小数位能表示的最大十进制数为2的52次方,即4 503 599 627 370 496。这是一个16位数,所以精度能百分百的保证十进制的15位。所以有效数字为16位。双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308。

简单的用法如下:

float timoArmor = 150.7; //timo的护甲是150.7,查看VS中armor实际的值可以看到是150.699997
double timoAttackSpeed = 0.865;/*timo的攻击速度是0.865,查看VS中attackSpeed实际的值可以看到是0.86499999999999999*/

与整数相比,浮点数有两大优点。第一个是浮点数可以表示整数之间的值,可以表示小数。第二个是浮点数的表示范围比整数大的多。浮点数也有两个缺点,一个是浮点数运算的速度通常比整数慢,而且精度将降低。下面通过一个简单的程序来说明:

float a = 3.14E+22;
float b = a + 1.0;

该程序定义一个float类型a,然后b是a+1,试问运行程序b-a是多少?我们认为结果应该为1,但是在我们程序运行结果中,b-a将会是0。产生这个问题的原因就是3.14E+22是一个小数点左边有23位的数字,加上1,就是在第23位加1,但是float类型只能表示8位数字有效,因此对这个值不会有任何影响。

4.void类型

void的意思是“无类型”,表示函数没有返回值以及对函数参数做限定。这里如果不理解的话,可以先看看就好了,以后讲到函数就懂了。如果不用void,比如用int或者别的,则函数需要有返回值。void就是不需要结果,否则如int、char等,就必需返回一个与其对应的数据才能编译通过。void不能用来定义变量,让我们试着来定义:

void a;

这个语句编译时会出错。不过,即使编译不会出错,它也没有任何实际意义。

5.总结

总结一下,本节内容主要介绍了C语言程序的基本数据类型。介绍了基本类型的整数类型和浮点类型,以及简单的讲解了void类型。整数类型又包括int型、char型、bool型,浮点类型又包括单精度浮点数(float)和双精度浮点数(double)。

6.练习

3-1 下面的程序,第一处i的值是什么?第二处i的值是什么?

char ch = 'A';
int i = ch;//第一处i

ch = ch + 1;
i = ch;//第二处i

标签:22,int,浮点数,float,数据类型,五年制,char,类型,void
From: https://www.cnblogs.com/yilangUAV/p/18408420

相关文章

  • 22级五年制C语言入门教程-(4)常量和变量
    1.常量和变量的概念程序执行过程中其值不能发生改变的量叫做常量,其值能发生改变的量叫做变量。常量可以直接使用,而变量则必须先定义后才能使用,否则编译器会报错。2.常量和变量的命名规范在介绍常量和变量的命名规范之前,我们先了解一下什么是标识符和关键字。2.1标识符标识符......
  • VS2022 17.12.0 Preview2版本对Copilot的功能增强
    前提条件,使用最新版的17.12.0Preview2,并且有有效的CopilotAI订阅,那么可以体验这些新鲜好用的功能增强了CopilotAI对IEnumerableVisualizer的可编辑表达式功能我们可以通过AI实现一些复杂的条件筛查,并且可以即时验证结果是否符合预期,对于开发和调试提供了极大的便利性......
  • python基本数据类型
    python基本数据类型标准数据类型Python3中常见的数据类型有:Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3的六个标准数据类型中:不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3个):List(列表)、Dictionary(字典)、S......
  • 122. 买卖股票的最佳时机 II
    给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。 示例1:输入:prices=[7,1,5,3,6,4]输......
  • Windows Server 2022 rdp
    继续水一篇:2022废弃了xddm转而使用wddm,rdp的渲染有比较大的变化。高版本的unreal又需要2022支持,被迫走上魔改windows以提升2022rdp环境下抓屏帧数的道路。测试代码来自https://github.com/robmikh/Win32CaptureSample,只手动添加了输出fps逻辑。patchwindows后能在[60,90]......
  • HyperAI超神经 x Apache Pulsar | 9 月 22 日,北京 Pulsar Meetup 不见不散!
    PulsarMeetup北京2024PulsarMeetup北京2024活动将于2024年9月22日(周日)由谙流科技和小红书联合举办。诚邀Pulsar和各大社区的小伙伴、广大技术爱好者、架构师和企业代表参与。主办单位:AscentStream谙流科技、小红书活动时间:2024年9月22日14:00-18:00活......
  • NOIP2022 游记
    NOIP2022游记突然想起来两年前的一篇游记没写,现在好像也已经很难再回忆起什么了,但我的OI生涯中也就这两场比赛,总得留下点什么来让日后回味这段充满热血的时光。Background坐标sc弱校,文化课不顶尖,但在年级上还算比较强,停课之前大概能维持在年级前\(25\)的样子。不是那种......
  • CEOI2022
    Day1T1Abracadabra题意:给你一个\(1\simn\)的排列\(p\),保证\(n\)为偶数,我们对它进行足够多次数的洗牌操作,定义一次洗牌为:考虑取出\(p_{1\sim\frac{n}{2}}\)作为序列\(A\),取出\(p_{\frac{n}{2}+1\simn}\)作为序列\(B\),将\(A\)和\(B\)归并后重新放回\(......
  • Recovery Catalog Schema Upgrade Fails With ORA-02298 On Constraint ROUT_F3
    OracleDatabase-EnterpriseEdition-Version19.16.0.0.0andlaterRecoveryCatalogschemaupgradetoversion19.16 failsWithORA-02298onconstraintROUT_F3RMAN>upgradecatalogrecoverycatalogispartiallyupgradedto19.16.00.00errorcreatingu......
  • 【算法题】22.括号生成-力扣(LeetCode)
    【算法题】22.括号生成-力扣(LeetCode)1.题目下方是力扣官方题目的地址22.括号生成数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1......