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)基本数据类型的更多相关文章

  1. 《JavaScript语言入门教程》记录整理:入门和数据类型

    目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...

  2. 《Ruby语言入门教程v1.0》学习笔记-01

    <Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...

  3. 《JavaScript语言入门教程》记录整理:运算符、语法和标准库

    目录 运算符 算数运算符 比较运算符 布尔运算符 二进制位运算符 void和逗号运算符 运算顺序 语法 数据类型的转换 错误处理机制 编程风格 console对象和控制台 标准库 Object对象 属 ...

  4. C语言入门教程-(5)格式化输入输出

    1.输入和输出 在程序的使用中,我们经常可以看的这么一个场景:用户需要输入数据,经过程序运算,得到结果后输出.在C语言中,输入数据和输出数据都是由库函数完成的,通过语句来输入/输出. 2.格式化输出— ...

  5. Go语言入门教程(十)之函数

    Hello 各位小伙伴大家好,我是小栈君,假期一眨眼就过去了.不知道大家玩的是否开心呢? 上次我们讲到了关于Go语言的流程控制,小栈君也希望小伙伴跟着小栈君一步一个脚印的敲一下代码,相互进步.本期我们 ...

  6. c语言该怎么入门?C语言入门教程(非常详细)

    C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言.C语言是计算机产业的核心语言,操作系统.硬件驱动.关键组件.数据库等都离不开C语言:不学习C语言,就不能了解计算机底层. 这套「C语 ...

  7. 《JavaScript语言入门教程》记录整理:面向对象

    目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...

  8. Go 语言入门教程,共32讲,6小时(已完结)

    Go语言入门教程,共32讲,6小时(完结) 在B站:https://www.bilibili.com/video/BV1fD4y1m7TD/

  9. c语言入门教程 / c语言入门经典书籍

    用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...

随机推荐

  1. 关于css伪类

    p:nth-child(2){} !选择所有p元素的第二个子元素:  p:nth-of-type(2) !选择所有p元素第二个为p的子元素(是选择第二个类型为p的元素 而不是第二个子集为p的元素)

  2. gitlab修改root密码

    在root用户下,执行 [root@localhost gitlab]# sudo gitlab-rails console production -------------------------- ...

  3. 【Java线程】SwingWorker的用法

    Swing应用程序员常见的错误是误用Swing事件调度线程(Event DispatchThread,EDT).他们要么从非UI线程访问UI组件:要么不考虑事件执行顺序:要么不使用独立任务线程而在ED ...

  4. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  5. [BZOJ1500][NOI2005]维修数列 解题报告 Splay

    Portal Gun:[BZOJ1500][NOI2005]维修数列 有一段时间没写博客了,最近在刚数据结构......各种板子背得简直要起飞,题目也是一大堆做不完,这里就挑一道平衡树的题来写写好了 ...

  6. Linux中cd test和cd /test以及类似命令的区别

    一.加“/”的区别 今天重拾Linux的学习!按照书上,在tmp下,创建文件夹,命令如下: mkdir -p /test1/test2 结果使用下面两行命令结果不同,就对是否加“/”有了疑问,就去百度 ...

  7. 【ARC077F】SS

    Description 如果某个串可以由两个一样的串前后连接得到,我们就称之为"偶串".比如说"xyzxyz"和"aaaaaa"是偶串,而& ...

  8. 【BZOJ4591】【Shoi2015】超能粒子炮

    Description 传送门 Solution ​ 记\(a=\lfloor\frac n p\rfloor\),\(b=n\%p\).我们尝试使用Lucas定理展开这些组合数,寻找公共部分.以下除 ...

  9. loj2538 「PKUWC2018」Slay the Spire 【dp】

    题目链接 loj2538 题解 比较明显的是,由于强化牌倍数大于\(1\),肯定是能用强化牌尽量用强化牌 如果强化牌大于等于\(k\),就留一个位给攻击牌 所以我们将两种牌分别排序,企图计算\(F(i ...

  10. 洛谷 P3197 [HNOI2008]越狱 解题报告

    P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...