C语言变量和数据类型

从数据在内存中的存储方式中可以得知

	计算机要处理的数据(诸如数字、文字、符号、图形、音频、视频等)是以二进制的形式存放在内存中的;我们将8个比特(Bit)称为一个字节(Byte),并将字节作为最小的可操作单元。

我们先从最简单的整数说起,看看它是如何放到内存中去的。

变量(Variable)

在生活中我们会找一个小箱子来存放物品,一来显得不那么凌乱,二来方便以后找到。计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放整数,并起一个好记的名字,方便以后查找。这块区域就是“小箱子”,我们可以把整数放进去了。

C语言中这样在内存中找一块区域:

int a;

int又是一个新单词,它是 Integer 的简写,意思是整数。a 是我们给这块区域起的名字;当然也可以叫其他名字,例如 abc、mn123 等。

这个语句的意思是:在内存中找一块区域,命名为 a,用它来存放整数。

	int 和 a 之间是有空格的,它们是两个词。也注意最后的分号,int a表达了完整的意思,是一个语句,要用分号来结束。

不过int a;仅仅是在内存中找了一块可以保存整数的区域,那么如何将 123、100、999 这样的数字放进去呢?

C语言中这样向内存中放整数:

a=123;

=是一个新符号,它在数学中叫“等于号”,例如 1+2=3,但在C语言中,这个过程叫做赋值(Assign)。赋值是指把数据放到内存的过程。

把上面的两个语句连起来:

int a;
a=123;

就把 123 放到了一块叫做 a 的内存区域。你也可以写成一个语句:

int a=123;

a 中的整数不是一成不变的,只要我们需要,随时可以更改。更改的方式就是再次赋值,例如:

int a=123;
a=6666;
a=8888;

第二次赋值,会把第一次的数据覆盖(擦除)掉,也就是说,a 中最后的值是8888、6666已经不存在了,再也找不回来了。

因为 a 的值可以改变,所以我们给它起了一个形象的名字,叫做变量(Variable)。

int a;创造了一个变量 a,我们把这个过程叫做变量定义。a=123;把 123 交给了变量 a,我们把这个过程叫做给变量赋值;又因为是第一次赋值,也称变量的初始化,或者赋初值。

你可以先定义变量,再初始化,例如:

int abc;
abc=333;

也可以在定义的同时进行初始化,例如:

int abc=333;

这两种方式是等价的。

数据类型(Data Type)

数据是放在内存中的,变量是给这块内存起的名字,有了变量就可以找到并使用这份数据。但问题是,该如何使用呢?

我们知道,诸如数字、文字、符号、图形、音频、视频等数据都是以二进制形式存储在内存中的,它们并没有本质上的区别,那么,00010000 该理解为数字16呢,还是图像中某个像素的颜色呢,还是要发出某个声音呢?如果没有特别指明,我们并不知道。

也就是说,内存中的数据有多种解释方式,使用之前必须要确定;上面的int a;就表明,这份数据是整数,不能理解为像素、声音等。int 有一个专业的称呼,叫做数据类型(Data Type)。

顾名思义,数据类型用来说明数据的类型,确定了数据的解释方式,让计算机和程序员不会产生歧义。在C语言中,有多种数据类型,例如:

说 明数据类型
字符型char
短整型short
整型int
长整型long
单精度浮点型float
双精度浮点型double
无类型void

为了让程序的书写更加简洁,C语言支持多个变量的连续定义,例如:

int a, b, c;
float m = 10.9, n = 20.56;
char p, q = '@';

连续定义的多个变量以逗号,分隔,并且要拥有相同的数据类型;变量可以初始化,也可以不初始化。

数据的长度(Length)

所谓数据长度(Length),是指数据占用多少个字节。占用的字节越多,能存储的数据就越多,对于数字来说,值就会更大,反之能存储的数据就有限。

多个数据在内存中是连续存储的,彼此之间没有明显的界限,如果不明确指明数据的长度,计算机就不知道何时存取结束。例如我们保存了一个整数 1000,它占用4个字节的内存,而读取时却认为它占用3个字节或5个字节,这显然是不正确的。

所以,在定义变量时还要指明数据的长度。而这恰恰是数据类型的另外一个作用。数据类型除了指明数据的解释方式,还指明了数据的长度。因为在C语言中,每一种数据类型所占用的字节数都是固定的,知道了数据类型,也就知道了数据的长度。

各种数据类型的长度如下:

在这里插入图片描述
如果感觉不错的话请给我点赞哟!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB基础教程(10)——二维中的数据可视化

目录 MATLAB数据可视化 绘图 在同一个figure里面绘制多个图形 本期小结 MATLAB数据可视化 绘图 绘制图形(二维)一般使用plot函数,这个函数一般能满足很多画图的功能了,比如我们能绘制一个函数图像: 代码如下&…

gen2服务器只显示spbc,gen2-regen培训资料.ppt

gen2-regen培训资料,regen,regen丽珍,regen面膜,auchimregen,manaregen,regenmode,cadregen,otisregen,regenhu概述 GeN2-Regen模型图 E&I Panel SPBC 介绍 电池检查 SPBC 功能按钮介绍 SPBC 各状态灯介绍 ERO&MRO操作说明 手动松闸检查 (E/I-panel) P5T/P6T使用 控制柜…

Spring Boot 分布式会话

应用范围 为了使Web能适应大规模的访问,需要实现应用程序的集群部署实现集群部署首先要解决session的统一,即需要实现session的共享机制,即分布式会话分布式Session的实现方式 基于resin/tomcat web容器本身的session复制机制基于NFS共享文件系统基于Coo…

没有bug队——加贝——Python 练习实例 29,30

目录 29.题目: 30.题目: 彩蛋: 扩展资料 29.题目: 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 程序分析:学会分解出每一位数。 注:…

Spring Boot Redis

Redis简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 存储类型 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合…

没有bug队——加贝——Python 练习实例 31,32

31.题目: 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。用 if 语句…

MATLAB基础教程(11)——二维中的数据可视化(续)

目录 今天目标: 画一个图像并且给图像加上标题 子图绘制 一些小知识 grid 设置框线 box 设置边框 polar() 绘图 今天小结 今天目标: 画一个图像并且给图像加上标题 首先我们画一张很简单的图形,比如就画一个y cos x 的图像吧。 代码…

Spring Boot 返回XML

一般RESTful都是返回json&#xff0c;有时候可能需要返回xml&#xff0c;我们该如何操作呢&#xff1f; Jackson Maven增加jar文件导入 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</a…

Spring Boot application.properties 常用配置

SPRING CONFIG (ConfigFileApplicationListener) spring.config.name配置文件名称&#xff0c;默认为application spring.config.location配置文件存放位置&#xff0c;默认为classpath目录下 mvc spring.mvc.async.request-timeout设定async请求的超时时间&#xff0c;以毫…

没有bug队——加贝——Python 练习实例 33,34

目录 33.题目&#xff1a; 小知识&#xff1a; 参数 返回值 我们换种写法&#xff1a; 34.题目&#xff1a; 我们也换种写法&#xff1a; 33.题目&#xff1a; 按逗号分隔列表。 小知识&#xff1a; join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串…

没有bug队——加贝——Python 练习实例 35,36

目录 35.题目&#xff1a;文本颜色设置。 小知识&#xff1a; 36.题目&#xff1a;求100之内的素数。 何为素数&#xff1f; 35.题目&#xff1a;文本颜色设置。 class bcolors:HEADER \033[95mOKBLUE \033[94mOKGREEN \033[92mWARNING \033[93mFAIL \033[91mENDC …

C语言各种类型数据的输出显示

之前我们使用 puts 来输出字符串。puts 是 output string 的缩写&#xff0c;只能用来输出字符串&#xff0c;不能输出整数、小数、字符等&#xff0c;我们需要用另外一个函数&#xff0c;那就是 printf。 printf 比 puts 更加强大&#xff0c;不仅可以输出字符串&#xff0c;…

没有bug队——加贝——Python 练习实例 37,38

目录 37.题目&#xff1a;对10个数进行排序。 Python sort()方法 语法 参数 返回值 Python sorted函数及用法 语法 返回值 38.题目&#xff1a;求一个3*3矩阵主对角线元素之和。 37.题目&#xff1a;对10个数进行排序。 程序分析&#xff1a;可以利用选择法&#xff…

C语言中的整数

整数是编程中常用的一种数据&#xff0c;C语言通常使用int来定义整数&#xff08;int 是 integer 的简写&#xff09;。 现代操作系统中&#xff0c;int 一般占用 4 个字节&#xff08;Byte&#xff09;的内存&#xff0c;共计 32 位&#xff08;Bit&#xff09;。如果不考虑正…

没有bug队——加贝——Python 39,40

目录 39.题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 40.题目&#xff1a;将一个数组逆序输出。 39.题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 程序分析…

C++ PAT 乙级 ——1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

C PAT 乙级 ——1002 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 题目分析 &#xff08;1&#xff09;由于自然数n的范围要求小于10^100&#xff0c;unsigned long long不满足要求&#xff0c;采用int型数组也难以输入&…

C语言中的二进制、八进制和十六进制的表示

二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的&#xff0c;表示一个十进制数字不需要任何特殊的格式。但是&#xff0c;表示一个二进制、八进制或者十六进制数字就不一样了&#xff0c;为了和十进制数字区分开来&#xff0c;必须采用某种特殊的写法&#xf…

没有bug队——加贝——Python 41,42

41.题目&#xff1a;模仿静态变量的用法。 python中是不支持静态变量的&#xff0c;所以可以通过以下的方法来实现静态变量的功能&#xff1a; 代码1&#xff1a; class CTest(object):#python静态变量实现方法i__initNonedef __new__(cls,value):if cls.i__init is None:cl…

C语言中的正负数及其输出

在数学中&#xff0c;数字有正负之分。在C语言中也是一样&#xff0c;short、int、long 都可以带上正负号&#xff0c;示例 //负数 short a1 -10; short a2 -0x2dc9; //十六进制 //正数 int b1 10; int b2 0174; //八进制 int b3 22910; //负数和正数相加 long c (-9)…

C++ PAT 乙级 ——1003 我要通过

题目详情 答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件&#xff0c;系统就输出“答案正确”&#xff0c;否则输出“答案错误”。 得到“答案正确”的条件是&#xff1a; 字符串中必须仅有 P、 A、…