c语言min函数_零基础学C语言(5):浮点型、字符和字符串

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

sizeof

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

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

怎么用呢?

看下面这个例子:

39e769719e2b03ccd3ac0aecb2a809a2.png

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

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

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

还有这个%d是什么呢?

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

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

我们来看结果:

a62d54e509554bd54c4573519eb1de95.png

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

eef559b6d554bd44bd2235c65664ab2f.png
5cc69020917309b91cee9a1621d17654.png

当然,你可以定义一个变量,把变量放在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这个头文件,老规矩,先引用:

3bfce0924b79749d1265d6da4e493121.png

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

啥叫宏?

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

405f3f7cb3e0cf706afbb026f7e82dc5.png

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

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

b0efb10af972e966e3317a3034cb6e75.png

字符类型

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

为啥是单引号?

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

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

5f5b295d6771b887fcb450899069af46.png

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

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

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

b614800bcd98902d213261dce2b1b273.png

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

1af5bc596654bce7a5b1083ce1e50695.png

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

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

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

d66d79a729700b8e730579499cc7cfe6.png
18281e8621c19d8eec6711914a77e188.png

一样是可以的。

字符串

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。

本节作业

以下代码的输出结果是什么?

a8187aaabae7a69ee7277c63f11e721a.png
4d82009b9ce896eec32451e60efa7fc2.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值