一篇文章牢记数据类型

数据类型

整理下C语言中数据的类型,放两张百度的图。

在这里插入图片描述

在这里插入图片描述

整型

有符号的一般说int、short、long、longlong四种,前面加上signed,一般省略,longlong我没咋看到过(太菜了)不讲了。无符号是用unsinged表示,没有方向,表示数量,无符号数不可能是负数。

1.int 整型

int是4个字节,-2(32-1) – 2(32-1)-1 (即 -2147483648 ~ 2147483647)
printf打印输出%d

2.short 短整型

数据类型大小是 2 字节,能表示的数值范围是
-2(16-1)– 2(16-1) -1 (即 -32768 ~ 32767)
打印类型是 %hd ,

3.long 长整型

数据类型大小是 4 字节,能表示的数值范围是
-2(32-1) – 2(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %ld
longlong的%lld
打印这三种还是要规范写%d、%hd、%ld、%lld,不过都用%d也可以打印出来,但是会给程序移植带来麻烦(我没懂。。。。。。)

无符号的就不说了,看上图应该就够了。


#include <stdio.h>

int main(){
	//整型
	int idata = 10;
	short sdata = 20;
	long ldata = 30;
	long long lldata = 40;
	unsigned int uidata = 50;
	unsigned short usdata = 60;
	unsigned long uldata = 70;
	unsigned long long ulldata = 80;
	
    printf("%d\n",idata);//10
	printf("%hd\n",sdata);//20
	printf("%ld\n",ldata);//30
	printf("%lld\n",lldata);//40
	printf("%u\n",uidata);//50
	printf("%hu\n",usdata);//60
	printf("%lu\n",uldata);//70
	printf("%llu\n",ulldata);//80
	
	return 0;
}

字符型

字符型的就是存储一个字节的单一字符,系统是通过字符的ASCLL码(大家可以看看对照下)来识别,比如A的ascll是65,a的ascll是97,大小写差32。
有符号的数值范围表示为-128~127;无符号的是0 ~ 255。打印的时候%c。

浮点型

float 单精度浮点型

单精度浮点型的大小是 4 字节
打印是%f , 系统默认保留 6 位小数,不足充0。
比如:float fdata = 9.623;
printf(“%f”,fdata);显示9.623000

double 双精度浮点型

双精度浮点型的大小为 8 字节

打印是%lf , 系统默认保留 68位小数,不足充0。

当我们选择保留几位小数的时候,可以使用 %m.nlf 来控制小数点后面的位数。当m超过该数值的位数时,会自动在前面补充空格,同理,n超过该数值小数点后面的位数时,会自动充0。
举例:

	double num;
	num = 3.1415;
	printf("%5.2lf\n",num);
	printf("%.2lf\n",num);
	printf("%.6lf\n",num);
/*结果:  3.14//3前面有一个空格
       3.14
       3.141500	
*/

%m.nf和%.nf的区别
%m.nf,m是包括小数点的数据宽度,n是小数点之后的位数;m过大,左边会补充空格,m过小,会按照实际数值输出
%.nf 总长度不限,小数点后面保留n位,不足补零

需要注意的是:
%f和%lf分别是float类型和double类型用于格式化输入输出时对应的格式符号。
其中:
float,单精度浮点型,对应%f。double,双精度浮点型,对应%lf。
单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
1.在用于输出时:
float类型可以使用%lf格式,但不会有任何好处。
double类型如果使用了%f格式可能会导致输出错误。
2.在用于输入时:
double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。

所以在输入输出时,一定要区分好double和float,而使用对应的格式符号。

#include <stdio.h>

int main(){
	//字符、浮点
	char cdata = 'a';
	char ccdata = 'A';
	float fdata = 9.632;
	double ddata = 3121238.236213;

	printf("%c  ",cdata);
	printf("%d\n",cdata);
	printf("%c  ",ccdata);
	printf("%d\n",ccdata);
	puts("============");
	printf("%11.5f\n",fdata);
	printf("%11.9lf\n",ddata);
	return 0;
//结果如下
/*
a  97
A  65
============
    9.63200
3121238.236213000
*/


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石子君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值