C语言中的基本数据类型

C语言中的基本数据类型分别为以下几种

整型、浮点型、字符类型

整型又分为整型int、短整型short、长整型long

浮点型分为单精度浮点型float、多精度浮点型double

首先来介绍整型

1、短整型short

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	short a = 10;   //定义一个短整型变量a,并赋值10给a
	printf("%d\n", a);
	return 0;
}

2、长整型

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	long a = 10;  //定义一个长整型变量a,并赋值10给a
	printf("%d\n", a);
	return 0;
}

3、整型

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a = 10;    //定义一个整形变量a,并将10赋值给a
	printf("%d\n", a);
	return 0;
}

通过代码和运行结果我们发现,短整型、长整型、整形都是表示整形的,并且输出结果也都为10,那么它们之间到底有什么区别呢,如果它们都一样,那为什么还要被设计出来呢,这时我们使用sizeof来查看他们所占内存空间大小。 

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(short));
	printf("%d\n", sizeof(int));
	return 0;
}

 通过运行结果我们发现,它们所占内存空间的大小是不一样的,C语言规定short类型所占内存空间大小要小于等于int,Int又要小于等于long,至于小多少,C语言没有明确的规定,每一个编译器定义的可能不同,这个我们不得而知。

当你要输出一个整型数据需要使用%d。

接下来介绍字符类型char

char不像上面的整型三兄弟,它是一个独生子女,并且一个char类型只能容下一个字符

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	char a = 'A';   //定义一个char类型的变量a,并将A赋值给a
	printf("%c\n", a);
	return 0;
}

同理我们也来看看char类型分配的内存空间大小

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	char a = 'A';
	printf("%c\n", a);
	printf("%d\n", sizeof(char));
	return 0;
}

 可以看到char类型所能占据的内存空间只有1,可见char这个独生子女不怎么受宠。

想要输出char类型变量,需要使用%c

最后来介绍我们浮点型两兄弟

多精度double

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	double a = 1.23;    //定义一个double类型的变量a,将1.23赋值给a
	printf("%lf\n", a);
	return 0;
}

 输出double类型的数据需要使用%lf

 单精度float

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	float a = 1.24;   //定义一个float类型的变量a,将1.24赋值给a
	printf("%f\n", a);
	return 0;
}

输出float类型的数据需要使用%f 

同样我们也来看看浮点两兄弟所占内存大小

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	printf("%d\n", sizeof(double));
	printf("%d\n", sizeof(float));
	return 0;
}

 

可以看到两兄弟所占内存空间也是不一样的,那如果只有这一个不同,为什么名字不和整型三兄弟相同叫做短浮点和长浮点呢,哈哈,当然还有区别,从名字中不难看出,float的精度是不如double的,这就导致在表示一个小数个数很多的计算时,float的结果的准确度会远远低于double。

那么基本数据类型都学习完了,上面我们所讲的所占内存的单位是字节,那么我这里有一个小小的问题 ,如果使用char类型来定义一个整型变量可以实现吗?让我们来试一试。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	char a = 10;
	printf("%d\n", a);
	return 0;
}

 

我们可以看到程序没有报错,而且还运行出来了,那么我们能不能用整型来定义一个字符呢?

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a = 'A';
	printf("%d\n", a);
	return 0;
}

 

 神奇的一幕出现了,竟然没有报错,难不成是编译软件出毛病了吗?当然不是,这里我们可以看到当定义一个整型变量a,并赋值为A之后,输出的整数是65,那么这个65有什么特殊之处吗。请听我慢慢道来。

相信在座的各位都知道,我们计算机呢不太聪明的样子,只能识别1和0,那我们输入一个字符A它能看懂吗,当然看不懂,那么我们就要想办法让它懂啊,怎么办呢,聪明的科学家想出来了,既然字符不行,我们就规定一个编码来代表这个字符,那么这个编码就叫做ASCII编码,ASCII编码是一个十进制的数字,那么既然知道了这个,我们知道了,当你定义一个char类型的变量时,其实内存中存储的是它的ASCII编码,所以char类型本质上是向内存中存储了一个十进制数字,这也就是为什么可以使用char类型来定义一个整型,那么需要注意的是,char类型所占内存空间是很小的,所以只能用于定义一些较小的整型。

常见的ASCII编码以及对应的字符

048->0,049->1,050->2,依次加1到057->9

065->A,067->B,068->C,依次加1到090->Z

097->a,098->b,099->c,依次加1到122->z

小写字符和大写字符中间查了32

那么我们就可以实现下面这个代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a = 'A';
	printf("%c\n", a+32);
	return 0;
}

 

以上就是基本数据类型的内容了,那么你看懂了吗。

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

钟爱陈奕迅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值