【无标题】平地起楼之基本数据类型(二)

本文深入探讨了浮点型(单精度、双精度、长双精度)的定义、存储结构及表示方法,强调了浮点数精度和数值范围的特性。同时,介绍了字符型的ASCII字符集、转义字符及其在存储和使用中的注意事项,展示了字符与整型数据之间的交互。

浮点型类型

定义

浮点型又叫实型,即小数或实数的指数类型,因小数点可浮动而得名
例:3.14159=3.14159 * 101=0.314159 * 101=314.159 * 10-2

类型

float(单精度浮点型) double(双精度浮点型) long double(长双精度浮点型)

类型字节数有效数字数值范围
float45正数部分:0,以及1.2 * 10-38~3.4 * 1038
double815正数部分:0,以及2.3 * 10-308~1.7 * 10308
long double815正数部分:0,以及2.3 * 10-308~1.7 * 10308
long double1613正数部分:0,以及3.4 * 10-4932~1.1 * 104923

负数部分则是以0为对称轴,与正数部分相对称的数字区间

计算机中存储结构

+1+.314159
阶符指数数符小数部分
+10-1+10-1+0.314159 * 10+1 (3.14159)

注意:
①由于用二进制形式表示一个实数以及存储单元的长度是有限的,因此不可能得到完全精确的值,只能存储有限的精确度
②小数部分占的位(bit)越多,数的有效数字越多,精度也越高
③指数部分占的位越多,能表示数的数值范围越大

表示方法

①十进制小数形式 由数字和小数点组成 例:3.14, 4. , .4 , .0, 0
②指数形式:“十进制小数或整数”+“e(或E)”+“十进制数整数” 例:3.5e-4 表示3.5*10-4

注意点

①e或E两边必须有数,不能省略
②单精度浮点数类型小数点后有效位数只有6位,双精度类型有效位数达16位③绝大部分c编译器规定小数点后最多保留6位,其余部分四舍五入==

定义浮点型类型的变量

通过类型定义符,可以定义一个浮点数类型的变量,与定义整数变量的方法相同

[类型定义符] 标识符;
例:

float fnum;
double dnum; 

浮点类型变量也可以使用 printf ()函数输出,与整型变量不同的是:float的格式说明项为“%f”,double的格式说明项为“%lf”

例:

#include <stdio.h>
int main()
{
 float fnum;
 double dnum;
 fnum=3.14;
 dnum=3.141592653;
 printf("%f",fnum);
 printf("\n");
 printf("%lf",dnum);
}

输出结果为3.140000 和 3.141593

fnum变量虽有效数字到小数点后两位,但输出时到小数点后六位
dnum变量虽然有效数字超过六位,但第六位后四舍五入

字符型类型

定义

字符类型保存的位ASCII码表中的字符,该类型占用1个字符,也可看作占用1个字节的整数类型,标示范围:0 ~ 255或-128 ~ +127

类型

类型名称字节数取值类型
[signed] char有符号字符型1-128~+127
unsigned char无符号字节型10~+255

ASCII字符集

内容

1.字母:大写英文字母A~Z,小写字母a ~ z
2.数字:0~9
3.专门符号:29个包括
① !“ # & ‘ ( ) * + ,- . / : ; < = > ? [ \ ] ^ _ ` { | } ~
②空格符:空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)
③不能显示的字符:空(null)字符(以‘\0’表示)、警告(以’\a’表示)、退格(以’\b’表示)、回车(以’\r’表示)等

在表示一个字符的时候,可以使用’ '将字符括起来的形式,也可以直接使用ASCII中的编码值。例:字母a可以使用’a’的形式表示,也可以使用数值97表示

具体内容(表格式)

ASCII值控制字符ASCII值控制字符值ASCII值控制字符值ASCII值控制字符值
0NUL32(space)64096
1S0H33!65A97a
2STX34"66B98b
3ETX35#67C99c
4E0T36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39.71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14S046.78N110n
15SI47/79O111o
16DLB48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92|124I
29GS61=93]125}
30RS62>94^126~
31US63?95_127DEL

字符数字与整数数字概念不同,前者以整数存储方式即二进制补码形式存储,占2或4个字节,可进行整数运算;后者以ASCII码形式存储,占1个字节,不可进行整数运算

转义字符

定义

对于可输入的字符可以使用键盘的方式输入,也可以在屏幕上显示。但控制字符没有输入的方式,甚至没有办法显示再屏幕上。为此,C语言提供了另外一种表示字符的方法,即转义字符。

使用

转义字符是以反斜杠""引导的特殊字符常量表示。
例:n表示字母表中的字母n,转义字符\n表示的就是换行符,控制文本换行

内容(表格形式)

转义字符含义ASCII码
\a报警响铃7
\b退格符(backspace)8
\t水平制表(tab)9
\n回车换行10
\v垂直制表11
\f换页12
\r回车不换行13
"双引号34
单引号39
\ \反斜杠“ \ "92
\ddd1~3位八进制数所代表的字符
\xhh1~2位十六进制所代表的字符

注意点

①\,‘,"这3个特殊含义字符的含义。对于字符\、’、”都用于特殊用途,如反斜杠\用于转义,如果直接使用’‘表示,则编译器无法识别,这是一个转义字符还是一个反斜杠字符
②\ddd和\xhh的使用:
例如:16进制41等于65,8进制101等于65,值为65的ASCII码是’A’
即:‘A’=‘\x41’=‘\101’
③转义字符中只能使用小写字母
④转义字符‘\v’与‘\f’不影响屏幕输出,它们仅影响打印机的打印输出
⑤C语言中,不可打印的字符都使用转义字符表示

字符类型的存储

①字符数据在内存中的存储形式:以二进制的ASCII码形式存储
②字符数据在内存中存储的是字符的ASCII码的值——一个无符号整数,其形式与整数的存储形式一样,所以C语言允许字符型数据与整型数据之间通用

因此,一个字符型数据,既可以字符形式输出,也可以整数形式输出

字符类型的使用

字符变量可以用一个字符为其赋值,也可以使用字符在ASCII码表中的编码值为其赋值,甚至整个编码值可以是16进制和8进制。输出字符变量时,printf()函数需要使用格式控制符%c。
例:
字符和整数互通:

#include<stdio.h>
int main()
{char ch1,ch2;
 ch1='A';ch2='b';
 printf("ch1=%c,ch2=%c\n",ch1,ch2);
 printf("ch1=%d,ch2=%d\n"ch1,ch2);
}

输出结果为:
ch1=A,ch2=b
ch1=65,ch2=98

字母大小写转换:

#include<stdio.h>
int main()
{char ch1,ch2;
 ch1='A';
 ch2='b';
 printf("ch1=%c,ch2=%c\n",ch1+32,ch2-32);
}

输出结果为:
ch1=a,ch2=B

总结

简单总结了基本数据类型中的浮点型和字符型,并记录了常用ASCII码表和转义字符表。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值