C语言学习(八)数据类型 浮点数与字符

这部分学习的是数据类型的浮点数与字符这两个类型,主要关于它们的类型介绍、输入输出等的问题,另外还学习了类型转换的方法。

1. 浮点类型

float 32字长 有效数字:7
double 64字长 有效数字:15

2. 浮点数输入输出:
在这里插入图片描述
例1:double的输出

int main()
{
	double a=1234.5678;
	printf("%f,%e\n",a,a);

	return 0;
}

运行结果如下:
在这里插入图片描述
由此可知%e与%f的区别在于:使用%e输出的结果是用科学计数法表示的数。

例2:double输出,小数位数指定
如需要对0.0016输出小数后面三位,代码如下:

int main()
{
	double a=0.0016;
	printf("%.3f\n",a);

	return 0;
}

运行结果:
在这里插入图片描述
也就是在%f的%之后加” . ”以及小数位数,会以四舍五入的方式按照小数为位数的指定进行输出。

3. 浮点数范围

浮点数中有三种特殊的范围:
inf为正无穷
-inf为负无穷
nan表示不存在

4. 浮点数精度:

两个浮点数进行相等的判断通常是不成立的,要判断两个浮点数是否相等,需要的操作:
不能使用f1==f2而应该用fabs(f1-f2)<1e-12,只要求差小于某一精度既可。

例3:浮点数精度

int main()
{
	float a,b,c;

	a=1.345f;
	b=1.123f;
	c=a+b;
	if(c==4.468)
		printf("相等\n");
	else
		printf("不等 c=%f %.10f",c,c);
	return 0;
}

运行结果为:
在这里插入图片描述
带小数的字面是double类型,如果要表示为float类型需要在小数后面加“f”
在规定了小数位数后,使用了四舍五入输出才会得到2.468,直接计算会有误差。

5. 浮点数类型选择

如果没有特别的需要,只要使用double既可。在64位上一次运算就是一个double。

6. 字符类型

char是一种整数,也是一种特殊数据类型:字符。

例4:字符类型

int main()
{
	char a,b;
	a=1;
	b='1';
	if(a==b)
		printf("相等\n");
	else
		printf("不等\n");
	printf("a=%d b=%d\n",a,b);

	return 0;
}

运行结果:
在这里插入图片描述
1作为整数表示1,作为字符表示‘1’。每个字符在计算机中会对应一个表示,也就是ASCII码,字符1对于ASCII码中的49。

7. 字符输入输出

例5:字符输入输出

int main()
{
	char c;
	scanf("%c",&c);
	printf("c=%d\n",c);
	printf("c=%c\n",c);

	return 0;
}

运行结果:
在这里插入图片描述

8. 字符对应ASCII码表

字符计算:
用两个字符进行计算实际是对其ASCII码表的表示进行计算,相加得到两个数在ASCII码表中位置的和,相减得到两个数在表中位置的距离。

大小写转换:
字母在ASCII表中顺序排列,大小写分开排列
a+’a’-‘A’可以将大写转为小写;a+’A’-‘a’可以将小写转为大写。

9. 逃逸字符
在这里插入图片描述
① \b用法是回退一格
如123\b输出为123,但是123\b4,则会输出124。

② \t是制表位
printf(“12\t34\n”);
printf(“1\t3\n”);
运行结果为:

10. 字符转化

自动类型转换:
当运算符两边出现不一样的类型时会进行自动类型转换,转化为范围更大的类型.
char > short > int > long >long long
int > float > double

对于printf来说,任何小于int的类型都会转化为ing,float会转化为double,所以printf浮点数时不需%lf;但是对于scanf不会,所以输出short类型时要用%hd。

强制类型转换:
一般当需要将类型往小的范围的类型转化的时候,就需要用到强制类型转换。
转换方式:(类型)值
如:(int)10.2
但是使用强制类型转换可能会有安全问题,如果超出转换类型的范围,会使数值发生改变。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值