C语言入门教程-(3)基本数据类型
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
3-2 编写一个程序,对盖伦的属性值,找到合适的类型来定义。
名字:简称为G
生命值:455
移动速度:340
攻击速度:0.625
攻击范围:125
生命回复:8.25
攻击力:59.5
可以在评论中,写下你们的练习答案。
之后的文章会给大家带来更精彩的内容
欢迎关注我的知乎专栏:程序员基础知识
获取练习答案以及更多实战项目
欢迎关注我的公众号:程序员基础知识
交(gao)流(ji)群:493584686
C语言入门教程-(3)基本数据类型的更多相关文章
- 《JavaScript语言入门教程》记录整理:入门和数据类型
目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- 《JavaScript语言入门教程》记录整理:运算符、语法和标准库
目录 运算符 算数运算符 比较运算符 布尔运算符 二进制位运算符 void和逗号运算符 运算顺序 语法 数据类型的转换 错误处理机制 编程风格 console对象和控制台 标准库 Object对象 属 ...
- C语言入门教程-(5)格式化输入输出
1.输入和输出 在程序的使用中,我们经常可以看的这么一个场景:用户需要输入数据,经过程序运算,得到结果后输出.在C语言中,输入数据和输出数据都是由库函数完成的,通过语句来输入/输出. 2.格式化输出— ...
- Go语言入门教程(十)之函数
Hello 各位小伙伴大家好,我是小栈君,假期一眨眼就过去了.不知道大家玩的是否开心呢? 上次我们讲到了关于Go语言的流程控制,小栈君也希望小伙伴跟着小栈君一步一个脚印的敲一下代码,相互进步.本期我们 ...
- c语言该怎么入门?C语言入门教程(非常详细)
C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言.C语言是计算机产业的核心语言,操作系统.硬件驱动.关键组件.数据库等都离不开C语言:不学习C语言,就不能了解计算机底层. 这套「C语 ...
- 《JavaScript语言入门教程》记录整理:面向对象
目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...
- Go 语言入门教程,共32讲,6小时(已完结)
Go语言入门教程,共32讲,6小时(完结) 在B站:https://www.bilibili.com/video/BV1fD4y1m7TD/
- c语言入门教程 / c语言入门经典书籍
用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...
随机推荐
- 关于css伪类
p:nth-child(2){} !选择所有p元素的第二个子元素: p:nth-of-type(2) !选择所有p元素第二个为p的子元素(是选择第二个类型为p的元素 而不是第二个子集为p的元素)
- gitlab修改root密码
在root用户下,执行 [root@localhost gitlab]# sudo gitlab-rails console production -------------------------- ...
- 【Java线程】SwingWorker的用法
Swing应用程序员常见的错误是误用Swing事件调度线程(Event DispatchThread,EDT).他们要么从非UI线程访问UI组件:要么不考虑事件执行顺序:要么不使用独立任务线程而在ED ...
- 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程
许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...
- [BZOJ1500][NOI2005]维修数列 解题报告 Splay
Portal Gun:[BZOJ1500][NOI2005]维修数列 有一段时间没写博客了,最近在刚数据结构......各种板子背得简直要起飞,题目也是一大堆做不完,这里就挑一道平衡树的题来写写好了 ...
- Linux中cd test和cd /test以及类似命令的区别
一.加“/”的区别 今天重拾Linux的学习!按照书上,在tmp下,创建文件夹,命令如下: mkdir -p /test1/test2 结果使用下面两行命令结果不同,就对是否加“/”有了疑问,就去百度 ...
- 【ARC077F】SS
Description 如果某个串可以由两个一样的串前后连接得到,我们就称之为"偶串".比如说"xyzxyz"和"aaaaaa"是偶串,而& ...
- 【BZOJ4591】【Shoi2015】超能粒子炮
Description 传送门 Solution 记\(a=\lfloor\frac n p\rfloor\),\(b=n\%p\).我们尝试使用Lucas定理展开这些组合数,寻找公共部分.以下除 ...
- loj2538 「PKUWC2018」Slay the Spire 【dp】
题目链接 loj2538 题解 比较明显的是,由于强化牌倍数大于\(1\),肯定是能用强化牌尽量用强化牌 如果强化牌大于等于\(k\),就留一个位给攻击牌 所以我们将两种牌分别排序,企图计算\(F(i ...
- 洛谷 P3197 [HNOI2008]越狱 解题报告
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...