五、数据类型(3):浮点数与字符

本文详细介绍了C语言中的浮点类型(double和float)、字符类型(char)、逻辑类型(bool)以及类型转换等内容,包括浮点数的表示范围、精度控制、字符的ASCII编码、大小写转换等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、浮点类型:double和float,它们是什么,如何输入输出?

 

2、浮点的范围和精度:浮点数能表示哪些数?
输出精度5

在%和f之间加上.n可以指定输出小数点后几位,这样的输出是做4舍5入的

printf("%.3f\n",-0.0049);
printf("%.30f\n",-0.0049);
printf("%.3f\n",-0.00049);

 

超过范围的浮点数

(1)printf 输出 inf 表示超过范围的浮点数:正负无穷大

(2)printf 输出 nan 表示不存在的浮点数

浮点运算的精度

(1)带小数点的字面量是 double 而非 float

(2)float 需要用 f 或 F后缀来表明身份

浮点数的内部表达

选择浮点类型

(1)如果没有特殊需要,只使用double

(2)现代CPU能直接对double 做硬件运算,性能不会比float 差,在64位的机器上,数据存储的速度也不比float 慢。

3、字符类型:char是整数也是字符

(1)用单引号表示的字符字面量

'a'
'1'

(2)''也是一个字符

(3)printf 和scanf 里用%c来输入输出字符

字符的输入输出

——如何输入‘1’这个字符给 char c ?

scanf("%c",&c);    //——>  1
scanf("%d",&i); c=i;     //——>  49

——‘1’的ASCII编码是49,所以当c==49时,它代表‘1’

printf("%i %c\n",c,c);
混合输入

——有何不同?

scanf("%d %c",&i,&c);    
scanf("%d%c",&i,&c);    
字符计算

(1)一个字符加一个数字得到ASCII码表中那个数之后的字符

char c='A';
c++;
printf("%c\n",c);

 

(2)两个字符的减,得到它们在表中的距离

int i='Z'-'A';
printf("%d\n",i);
 
大小写转换

(1)字母在ASCII表中是顺序排列的。

(2)大写字母和小写字母是分开排列的。

(3)‘a’-'A'可以得到两段之间的距离,于是

a+'a'-'A'  //可以把一个大写字母变成小写字母
a+'A'-'a'  //可以把一个小写字母变成大写字母

 

4、逃逸字符:反斜杠开头的字符是特殊的控制字符

——用来表达无法印出来的控制字符或特殊字

逻辑类型
#include<stdbool.h>

 

 之后就可以使用 bool 和 true、flase

bool的运算

(1)bool 实际上还是以int的手段实现的,所以可以当作int来计算。

(2)也只能当作int 来输入输出

5、类型转换:如何在不同类型之间做转换?
自动类型转换

——当运算符的两边出现不一致的类型时,会自动转换成较大的类型。

(1)大的意思是能表达的数的范围更大

(2)

char  ——> short  ——> int ——> long ——>long long

(3)

int ——> float ——> double

——对于printf ,任何小于int的类型会被转换成Int;float会被转换成double

——但是scanf不会,要输入short,需要%hd

 

强制类型转换

——要把一个量强制转换成另一个类型(通常是较小的类型),需要:

(类型) 值
int10.2
short32

——注意这时候的安全性,小的变量不总能表达大的量

short32768

只是从那个变量计算出了一个新类型的值,它并不改变那个变量,无论是值还是类型都不改变。

double a=1.0;
double b=2.0;
int i=(int) a/b;

——强制类型转换的优先级高于四则运算

int a=5;
int b=6;
double d=(double)(a/b);

 

转载于:https://www.cnblogs.com/Strugglinggirl/p/9033873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值