汉扬编程 编程大纲 零基础学C语言(5):浮点型、字符和字符串

零基础学C语言(5):浮点型、字符和字符串

上一节,我们重点介绍了bool型和整型数据,并介绍了计算机的三种码制——原码、反码和补码。既然有整型,那当然有非整型,还有字符型和字符串。

零基础学C语言(5):浮点型、字符和字符串

sizeof前面我们说过,有很多奇怪的、由基本数据类型衍生出来的数据类型,比如long long或者long int等等,我们一时之间会不知道这些奇怪的数据类型占多大字节,该怎么办呢?

零基础学C语言(5):浮点型、字符和字符串

这里教给大家一个方法——关键字sizeof,记住sizeof是一个关键字,不是函数,是关键字!很多初学者甚至是很多资深的程序员都会误解sizeof是个函数,其实它是个关键字。

零基础学C语言(5):浮点型、字符和字符串

怎么用呢?

零基础学C语言(5):浮点型、字符和字符串

看下面这个例子:

零基础学C语言(5):浮点型、字符和字符串

零基础学C语言(5):浮点型、字符和字符串

零基础学C语言(5):浮点型、字符和字符串

零基础学C语言(5):浮点型、字符和字符串

先来看sizeof的用法,sizeof()括号里填上定义的变量或者是数据类型都可以,我们看这个printf函数,是不是和之前有所不同,多了两个%d,还有一个逗号后面的表达式。

零基础学C语言(5):浮点型、字符和字符串

首先看看一直出现的“\\n”,这是啥?

零基础学C语言(5):浮点型、字符和字符串

“\\n”叫换行符,顾名思义,一句话打印完换一行。

零基础学C语言(5):浮点型、字符和字符串

还有这个%d是什么呢?

零基础学C语言(5):浮点型、字符和字符串

严格意义上来说,叫格式控制串,这个我们到具体将printf函数再说,%d表示输出有符号的十进制数,%u是输出无符号的十进制数,%f是输出浮点数,%c是输出字符型,%s是输出字符串。

零基础学C语言(5):浮点型、字符和字符串

上面列举了常用的几种格式控制串,大家记住就好,对应一个%+[格式字符],逗号(英文格式)后面就要加一个变量,如果有多个变量,也用逗号隔开。

零基础学C语言(5):浮点型、字符和字符串

我们来看结果:

同样地,如果遇到乱七八糟的数据类型不知道占几字节,也可以用这种方式,比如long long和long int:

当然,你可以定义一个变量,把变量放在sizeof()里也能得到同样的结果。再强调一遍,sizeof是关键字,也就是第三章要说的32个关键字(现在不止32个),不是函数。

浮点型OK,接下来进入上节遗留的问题,浮点型,浮点型又称实型,很简单,基本浮点型就两个double和float,当然,还可以衍生long double型等,先看基本内容。

float单精度型,一般占4字节,浮点型编译器默认保留6位精度(就是编译器默认只输出小数点后六位,除非用户自己设置保留几位),float就是6位精度,有效位数是7位。定义float a;

double双精度型,占8字节,15位精度,有效位数是16位。上面举例的long double是占16字节的,一般情况下我们是用不到了,为啥呢?

小数点后15位数都不够你用的,你想上天么?定义double a;

我们前面介绍整型数据类型都直接告诉大家取值范围,到浮点型咋不给呢?直接给怕你们印象不深,我们通过程序写出来。

前面告诉大家%f是可以输出浮点数的,但是在这里我们要全部显示出来,因为光听我讲精度是几位,取值范围是多少,大家怀疑,拿我们打印出来好了,所以换一个,%E或%e,按指数形式输出单、双精度实数,大家自己看。

怎么写?

用float.h这个头文件,老规矩,先引用:

我们可以看到,FLT_MAX、FLT_MIN、DBL_MAX和DBL_MIN这四个大写的宏,这个宏出自float.h这个头文件里。

啥叫宏?

卖关子。反正这几个宏就是float和double能赋的最大值和最小值,来看结果:

知道我为啥不直接写了吧……

老规矩,总结上图(包括long double):

字符类型我们char字符型终于上场了。无论哪种操作系统,字符类型都是占一个字节。比如char a = ‘a’;前面的a是变量,后面的a是字符,要用单引号。

为啥是单引号?

如果是双引号就变成了接下来要说的字符串了,记住’a’和”a”不是同一个东西。还有,前面提到的\\n也是一个字符。

说到字符类型,就不得不提一个东西——ASCII表,长啥样子呢?

我们看一共0~255,256个,为啥是256个字符?

因为char占一字节,无符号最大就是255。

我们来说下这个ACSII表怎么用,看97号,字符a,程序如下:

定义一个字符变量s,赋值为’a’,我们分别以%d和%c打印,还记得啥意思不,以十进制和字符型输出,我们看结果:

可见,a字符在ASCII表中的确是97,没毛病吧。

既然我们说了,char是整型和字符型,那能不能直接用整型输出字符型呢?

当然没问题,我们看程序:

一样是可以的。

字符串C语言中使用双引号" "表示一个字符串,比如:"ABCDEF"。这就是我们在打印"Hello World!"时为什么要使用双引号的原因。

如果大家学过C++,应该知道有个string是专门定义字符串的,但C语言没有这个关键字,但也有办法,就是用数组,这个我之后再说。

其他类型基本数据类型基本就给大家讲完了,至于构造类型、指针类型和void,我们之后在结构体和指针再说,咱们慢慢来。

总结这一节给大家简单介绍了sizeof这个关键字(再强调一遍,不是函数),浮点型以及printf的另一种形式,还有字符型和字符串型(讲数组时详细分析)。基本数据类型已经说完了(要注意我一直强调的部分),那结束了吗?并没有,我们只是初识了数据类型。变量和常量的存在,并没有深入细聊可能存在的坑,所以,下一节继续。

上节作业分析定义一个signed char型变量a,a = 128; 输出a的值是多少?请具体分析,并打印验证,欢迎小伙伴在评论区晒出你的作业!

我们按步骤啦来,首先128是正数,其原反补码均相同:

原码:1000 0000

反码:1000 0000

补码:1000 0000

然后计算机看到第一位是1,是负数,从补码回推原码

补码:1000 0000

反码:1111 1111

原码:1000 0000

所以打印出来的是-128。

本节作业以下代码的输出结果是什么?

尽量自己做,然后敲代码验证。

温馨提示:第一节有一个很奇怪的链接,大家记得保存哦~

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6447.html

C/C++编程笔记:C ++字符串类及其应用!新知识又来啦

南开大学C语言与数据结构考研真题及答案——才聪学习网

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部