网易首页 > 网易号 > 正文 申请入驻

C语言数据类型中的基本类型

0
分享至

变量的数据类型

在应用程序中,由于数据存储时所需要的容量各不相同,因此,为了区分不同的数据,需要将数据划分为不同的数据类型。C语言中的数据类型有很多种,具体分类如下图所示。

从图中可以看出,C语言中的数据类型可分为 4 种,分别是基本类型、构造类型、指针类型、空类型。下面我们将针对基本数据类型进行详细地讲解。

整型变量

在程序开发中,经常会遇到 0 、-100 、1024 等数字,这些数字都可称为整型。整型就是一个不包含小数部分的数。在 C 语言中,根据数值的取值范围,可以将整型定义为短整型(short int)、基本整型(int)和长整型(long int)。下面列举了整数类型的长度及其取值范围。

从表中可以看出,整数类型可分为 short 、int 和 long ,这三种类型可以被 signed 和 unsigned 修饰。其中,被 signed 修饰的整数类型称为有符号的整数类型,被 unsigned 修饰的称为无符号的整数类型。它们之间最大的区别是无符号类型可以存放的正数范围比有符号类型中的范围大一倍。例如,int 的取值范围是-231~231-1,而 unsigned int 的取值范围是 0~232-1。默认情况下,整型数据都是有符号的,此时signed修饰符可以不用写。

需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然 C 语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型,short 类型整数的长度不能短于 int 类型。

刚刚我们了解了不同整数类型数据的取值范围,接下来我们通过一个案例来具体了解下:

#include <stdio.h>
int main()
{
int a = {{12345:0}};
long b = -{{23456:0}}, sum1;
unsigned int c = {{32800:0}}, sum2;
sum1 = b - a;
sum2 = c - b;
printf("sum1=%ld,sum2=%ld\n",sum1,sum2);
return 0;
}


运行结果如下图所示:

结果是-{{35801:0}},无符号整数类型 sum2 的结果是 {{56256:0}}。

实型变量

实型变量也可以称之为浮点型变量,浮点型变量是用来存储小数数值的。浮点型变量分为两种:单精度浮点数(float)、双精度浮点数(double),不过 double 型变量所表示的浮点数比 float型变量更精确。

上表中,列出了两种浮点数类型变量所占的空间大小和取值范围。在取值范围中,E表示以 10 为底的指数,E后面的“+”号和“-”号代表正指数和负指数,例如,1.4E-45表示 1.4*10-45。为了让读者更好地理解浮点型数据在内存中的存储方式,接下来以单精度浮点数为例进行详细讲解,如下图所示。

在图中,浮点数包含符号位、小数位和指数位三部分。例如,小数 3.{{14159:0}}在内存中的符号位为“+”,小数部分为.{{31415:0}},指数位为1,连接在一起即为“+0.{{314159:0}} * 101= 3.{{14159:0}}”。在 C语言中,一个小数会被默认为 double类型的值,因此在为一个 float 类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母“F”(或者小写“f”),而为 double类型的变量赋值时,其所赋值后面的字符“D”(或小写“d”),可以省略。具体示例如下:

float f = 123.4f; //为一个 float 类型的变量赋值,后面必须加上字母 f

double d1 = 100.1; //为一个 double 类型的变量赋值,后面可以省略字母 d

double d2 = 199.3d; //为一个 double 类型的变量赋值,后面可以加上字母 d

另外,在程序中也可以为一个浮点数类型变量赋予一个整数数值,示例如下:

float f = 100; //声明一个 float 类型的变量并赋整数值

double d = 100; //声明一个 double 类型的变量并赋整数值

重要知识点:float和 double之间的数据转换

由于浮点型变量是由有限的存储单元组成的,因此只能提供有限的有效数字。在有效位以外的数字将被舍去,这样可能会产生一些误差。例如,将 3.{{1415926:0}}赋给一个 float型变量,但它只能保证前 7 位是有效的。

如下面的案例所示:

#include<stdio.h>
int main()
{
float a;
a = 3.{{141592612:0}};
printf("a=%f\n",a);
return 0;
}

运行结果如下图所示:


从图中可以看出,程序运行结果为 3.{{141593:0}}。我们会发现该输出的值与给定的值之间有一些误差。这是由于 a是单精度浮点型变量,它只能提供 7 位有效数字,而 3.{{141592612:0}}已经超出了其取值范围,所以后面的几位被舍去了。

字符型变量

字符型变量用于存储一个单一字符,在 C语言中用 char 表示,其中每个字符变量都会占用 1个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。

例如,'A'的声明方式如下所示:

char ch = 'A'; //为一个 char 类型的变量赋值字符'a'

上述代码中,将字符常量 'A '放到字符变量 ch 中,实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII编码放到变量的存储单元中。例如:ASCII使用编号 65来对应大写字母“A”,实际上变量 ch存储的是整数 65,而不是字母“A”本身。

接下来通过一个案例来说明:

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

行结果如图所示:

上例中,定义了两个 char 类型变量,分别赋值为字符 'A' 和数字 65,然后通过 printf函数把两个变量的内容以字符形式打印到屏幕上。从图中可以看出,两个变量输出的结果是一样的,这说明对于字符型来说,A和 65其实没什么区别。严格来说,字符类型也是整型类型。

需要注意的是,除了可以直接从键盘上输入的字符(如英文字母,标点符号,数字,数学运算符等)以外,还有一些字符是无法用键盘直接输入的,比如,“回车”,此时需要采用一种新的定义方式——转义字符,它以反斜杠\开头,随后接特定的字符。

下面列举了一些常见的转义字符:

接下来,我们通过一个具体的案例来演示转义符的用法:

1 #include <stdio.h>
2 int main()
3 {
4 char ch1 = 'A';
5 char ch2 = '\n';
6 char ch3 = 'B';
7 char ch4 = '\\';
8 printf("%c",ch1);
9 printf("%c",ch2);
10 printf("%c",ch3);
11 printf("%c",ch4);

12 printf("\n");
13 return 0;
14 }

运行结果如下图所示:

案例中定义了四个字符型变量,其中 ch2 被赋值为转义字符 '\n' 即换行符序,ch4被赋值为转义字符 '\\' 即反斜杠。从第 8 行到第 11 行按照顺序分别将四个变量的值输出到屏幕上,我们会发现,输出字符 A之后则会另起一行输出字符 B,转义字符 '\n' 的作用就是控制输出结果另起一行。字符 B后输出的是字符 ' \' 。第12 行为了使输出结果的格式清晰一些又输出了一个换行符,防止程序结束后命令行提示符紧跟在输出结果的后面。

求关注,求转发,求支持!
想要学习的童鞋可以加群:564950050
同时关注我们的微信公众号:【轻松学C语言】

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中方连劝4次,耶伦全都拒不接受,不到24小时,一架专机直飞美国

中方连劝4次,耶伦全都拒不接受,不到24小时,一架专机直飞美国

奇思妙想草叶君
2024-04-18 17:50:29
湘潭大学辟谣“外卖投毒致学生死亡” 老师:上周接医院反馈,对我们来说是很大损失

湘潭大学辟谣“外卖投毒致学生死亡” 老师:上周接医院反馈,对我们来说是很大损失

红星新闻
2024-04-19 21:04:55
“智障男子抢劫案”再审改判无罪:曾三次被法院认定抢劫

“智障男子抢劫案”再审改判无罪:曾三次被法院认定抢劫

重案组37号
2024-04-19 17:54:35
23年皇马生涯结束!罗马诺:预计纳乔6月离队,国米对他有意

23年皇马生涯结束!罗马诺:预计纳乔6月离队,国米对他有意

懂球帝
2024-04-20 01:47:15
新华社快讯:据朝中社20日报道,朝鲜19日进行战略巡航导弹超大型战斗部威力试验和新型防空导弹试射。

新华社快讯:据朝中社20日报道,朝鲜19日进行战略巡航导弹超大型战斗部威力试验和新型防空导弹试射。

新华社
2024-04-20 05:26:03
湖人出征丹佛终结8连败?詹皇再次自称GOAT 球探看好4-2淘汰掘金

湖人出征丹佛终结8连败?詹皇再次自称GOAT 球探看好4-2淘汰掘金

罗说NBA
2024-04-20 05:02:57
女记者卧底采耳店,拍下服务全过程,躺采、柔式按摩“别有洞天”

女记者卧底采耳店,拍下服务全过程,躺采、柔式按摩“别有洞天”

影孖看世界
2024-04-19 18:35:16
马斯克:贪婪的最高表现是独载,权利才是剥削的最大根源!

马斯克:贪婪的最高表现是独载,权利才是剥削的最大根源!

世态言凉
2024-04-19 14:52:52
5名日本人被误当中国人遭恐袭!巴基斯坦警方:两国人长相都一样

5名日本人被误当中国人遭恐袭!巴基斯坦警方:两国人长相都一样

大风文字
2024-04-19 20:05:11
北京半程马拉松组委会官方:何杰与3名外籍选手 成绩取消收回奖励

北京半程马拉松组委会官方:何杰与3名外籍选手 成绩取消收回奖励

醉卧浮生
2024-04-19 16:25:48
宿命之战!林高远淘汰樊振东,再战张本智和,曾被对手大逆转

宿命之战!林高远淘汰樊振东,再战张本智和,曾被对手大逆转

天涯沦落人
2024-04-19 20:48:29
吃人血馒头?B站突现大量直播,名字均为《XX患癌停药,XX努力再努力》

吃人血馒头?B站突现大量直播,名字均为《XX患癌停药,XX努力再努力》

可达鸭面面观
2024-04-18 17:06:08
约翰逊“不做历史罪人”让俄罗斯愕然,乌军多条战线击退俄军

约翰逊“不做历史罪人”让俄罗斯愕然,乌军多条战线击退俄军

史政先锋
2024-04-19 23:48:03
国奥提前出局!36年无缘奥运会,延续两大魔咒,日韩晋级淘汰赛

国奥提前出局!36年无缘奥运会,延续两大魔咒,日韩晋级淘汰赛

奥拜尔
2024-04-20 01:35:58
退钱,免职!重庆严肃处理错收多收燃气费问题

退钱,免职!重庆严肃处理错收多收燃气费问题

新京报
2024-04-19 22:58:21
百威旗下哈尔滨啤酒被检出真菌毒素 负责人回应称远低国家标准

百威旗下哈尔滨啤酒被检出真菌毒素 负责人回应称远低国家标准

中国网财经
2024-04-19 18:22:07
凌晨重磅!美国一票否决,中方:十分失望

凌晨重磅!美国一票否决,中方:十分失望

每日经济新闻
2024-04-19 07:44:07
国民党主席朱立伦想访问大陆,向大陆开出3个条件,邱毅:太荒唐

国民党主席朱立伦想访问大陆,向大陆开出3个条件,邱毅:太荒唐

朗威游戏说
2024-04-19 23:51:52
河北多车相撞已致8死,死者身份被扒,可怕画面流出,目击者发声

河北多车相撞已致8死,死者身份被扒,可怕画面流出,目击者发声

求实者
2024-04-19 22:35:46
华为Pura 70 Ultra独家技术,别说友商没有,苹果也做不出来!

华为Pura 70 Ultra独家技术,别说友商没有,苹果也做不出来!

科技最酷前沿
2024-04-19 12:44:58
2024-04-20 07:42:44
C语言
C语言
C语言学习分享平台
17文章数 1354关注度
往期回顾 全部

教育要闻

一所中学九名学生被世界顶尖学校录取!最重要的是...

头条要闻

媒体:以色列所谓“导弹袭击”伊朗可能只是虚惊一场

头条要闻

媒体:以色列所谓“导弹袭击”伊朗可能只是虚惊一场

体育要闻

米切尔这次对线不会输了吧

娱乐要闻

北影节开幕之夜,内娱女星千娇百媚

财经要闻

新华资管香港的秘密:猛投地产或致巨亏

科技要闻

华为今年最关键的事曝光!Pura 70有新消息

汽车要闻

风神L7预售 东风汽车北京车展阵容公布

态度原创

游戏
家居
时尚
数码
军事航空

诸葛亮北伐路上的头号克星郭淮,王者之心里换成姜维能不能拿下?

家居要闻

光影浮动 色块碰撞与线条起伏的情感呼应

这场「时装旅行」,没十年功力拿不下沪签

数码要闻

让我们回顾25年前微软IntelliMouse Explorer的亮相

军事要闻

伊朗总统发声 未提及伊斯法罕爆炸声

无障碍浏览 进入关怀版