当前课程知识点:程序设计基础 > 第二章 变量与代数思维 > 2.4 变量定义与变量类型 > 2.4.1 变量定义与变量类型
刚才大家通过王小二
编写的电子秤
这样一个模拟程序
已经对变量
已经有了一个基本概念
也对代数思维
有一个初步的印象
那为了更好的理解这个
下面我们先对变量
它的特点进行一个介绍
那么变量我们已经知道
它是专门用来存储一些值的
那么在程序里面
经过操作它的值
可以变换的这个量
我们把它称为变量
变量在使用它之前
要有声明
就像我们刚才看到的
模拟程序里面
前面的这几行
在后面用公式去
用这些变量的时候
前面有对它的一个定义
那每一个变量跟其他的变量
它不能相同
而且呢
必须是一个合法的名称
什么叫合法呢
就是每一个字符
都必须是要么是字母
要么是下划线
第一个字母必须是这样子
那么后面的字符
可以从字母数字下划线
里面去选择
来进行随意的组合
但是有个要求
不能跟我们C C++里面的
系统所保留的
我们称之为关键字的
那些词相同
就是你可以随便取
但是你不可以取main
这不可以
你可以随便取
但是不可以去取int
这样的名字
因为这些称之为语言的关键字
不允许在程序里面当做变量来使用
为了让我们的程序更好理解
有人可能会觉得奇怪
我要理解它干嘛
不是让计算机去理解吗
程序是人编出来的
有的时候难免会出错
那你去调整调试它的时候
改正错误的时候
如果代码你看的一塌糊涂
要怎么调试呢
怎么改正错误呢
程序有时候也需要相互的交流
要给别人去用
或者你要去用别人的程序
如果别人看不懂或者你看不懂
这个事情没法干
所以我们在取变量的时候
一定要取一个好听的名字
实际上就取一个好懂的名字
那么一般来讲
我们由于它的变量名称
所用的字符的限制
首字母是下划线
或者字母
而后面是字母下划线数字的选择
这样几个里面去选择
为了让名字更有意义
一般呢
大家约定的是使用英文的单词
或者英文单词的缩写
或者大家也可以使用汉语拼音
这些都可以
总之一条原则
看上去最好能够望文生义
一看就能够清楚干什么用的
所以有的时候
我们在程序里面也会出现一些
在这个编程的业界里面
大家约定俗成的
一些名称来做变量名
我们后面章节的内容会看到
那个变量的名称
其实可能是一个字母
但是这样一个用法呢
是在编程的领域里面很常见的
所以这里面关于变量的命名
大家从一开头学程序的时候
要有所注意
在刚才的代码里面我们也看到
变量定义的时候
需要声明它的名称
它的类型
这两个信息
刚才名称我们讲过一些规范
大家要遵守
那么在名称之前
有一个称为类型的东西
每一个变量都是有它一个类型
类型是什么东西呢
我们后面还会有讨论
现在我们只需要知道
在C C++语言里面
数据变量的类型
大体上可以分成两类
第一类我们把它称之为基本数据类型
比如说int、float这些整型浮点等
第二类型呢我们称之为构造数据类型
在我们课程的后续章节中会讲到
比如数组、结构、枚举等等
这些跟int、float、double这些类型
不太一样
我们把它称为构造数据类型
他是用基本的数据类型
它的变量按照特定的规律
来构造而成的
在计算机里面
各种数据其实是存在内存空间里面的
那到底存多大呢
类型其实就是要告诉计算机
要分配多大个地
不同类型的数据
它占用的内存大小
可能是不一样的
不同的类型它表示的数据
也有比较大的差异
大家看到
整型它在内存里面占了四个字节
每一个字节是八个二进制位
这个在前面我们讲计算机的基本历史
原理的时候大家已经听到了
每一个字节是八位
那么一个int占四个字节
那就意味着他有32个二进制位
听上去很长
那么这样的一个整数
它表示数的范围
其实也是有限的
大家可以看到
这个数字很长
第二种类型我们称之为无符号整型
提到有符号无符号
其实这个概念呢
跟我们数学上的
正数负数这个有关联
一个无符号的整数
那这样的变量
它永远只能存储
这种非负的数
它可能是0
然后可能是正整数
但是它不会是负的
因为它没有符号
所以它怎么着都是正数
这个时候它表示的范围
很显然大家看到
比刚才这个int类型要大
它的这个最大值要比它大
第三个呢 longint
长整型
但是呢它的表示范围
其实在现在我们这个定义器下面
也是一个有限的范围
第四个呢
是这个无符号的长整型
那么这是它表示的范围
那么除了这些整型之外
我们还有一些类型
是表示实数的
或者呢表示小数的
那大家从小学到高年级就
开始学小数或者学分数
最开始大家搬着指头是整数
最后几分之几那是分数
几点几那是小数
在计算机里面也要有这样的区分
所以第二大类型
称之为实数类型
它大体上分之为三种
一个呢叫做 float
第二个呢叫做double
double有的时候也
被称为双精度
double表示比
float的精度更大
那么可以看到
在double这个类型里面
它的这个表示的范围
比这个float要大得多
然后第三类呢是longdouble
那它占的字节就更多了
这个表示范围就更广了
这是三种不同的实数类型
基本上在我们数学里面
所能会碰到的数据
这些都能表示出来
那么第三大类型呢
我们称之为布尔类型
这个其实是跟布尔代数
数学这个离散数学
有关的一种数据的类型
也就是这种变量
它是表示逻辑这种结果的
我们把这种布尔型有时候
称之为逻辑类型
它在内存里面占一个字节
它只有两个结果
真或者假
对一个事物或者
对一个结论的判断
这个结论是真的
这个结论是假的
当然你可以说对的错的
总之表示一个逻辑上的值
那么这个值跟整数不太一样
它有它特殊的运算规律在里面
那我们把这个称为布尔类型
这个类型的名字bool小写的
第四个类型呢叫字符类型
这个拼写是char
那这个类型呢也占一个字节
大家也可能觉得奇怪
那计算机计算机
不是用来计算的吗
被算的的不都是数吗
刚才整型浮点型好理解
加上布尔类型呢
逻辑上的运算好像也能理解
那为什么作为一个计算机
它会有字符类型呢
这个大家想一想
其实也比较好理解
我们看到的计算机已经远远
超出它最初设计的时候
只是用来计算这个功能了
也就是我们现在计算机
不仅可以算数
还可以算别的东西
字符就是一个不是数的
可以算的那个东西
至于为什么字符可以算
计算机怎么去算字符
这个东西的
我们后面还会专门来讨论它
这是第四种类型字符类型
也就是它会在屏幕上
在变量里面
存储的是字符
符号 变量在使用的时候
要求它一定要定义
先定义后使用
在使用它的时候有时候
需要对它设定初始的值
那我们把变量的定义一般写作
一般是要求写成类型的名字
空格符 然后变量的名字
就像现在看到的一样int a
就定义了一个名称为a的整型变量
这个变量里面存储的值是整数
或者说在这个变量所在的存储空间
里面的二进制位
要把它解释成为整数
注意我说的这句话
要把里面存储的二进制位解释成整数
言下之意
我是不是也可以解释成别的呢
这个我们后面会有一个讨论
那么在定义变量的时候
对它进行赋值
我们称之为变量的初始化
就像现在大家看到的
int a=300;
这个过程我们可以画个图
可以大家看到
a表示的是它的符号的地址
300是这个a单元里面的内容
而下面写着这个and a
他表示是a变量的地址
所以int a=300
意思就是让计算机
去分配一个四字节的内存空间
把300这个值存储到里面去
这就是一个变量在定义
的同时赋了初值
我们把它称之为变量的初始化
那么在变量定义好了之后
或者说在定义好的同时初始化了之后
我们就可以使用它
目前我们对变量的使用
一个是把它应用到表达式中去
代表了一个量
另外一个就是把它
放在等号的左边
意思就是要用等号右边的
结果去送到左边这个变量
的内存单元去
我们把这个称为变量赋值
它的写法是变量等于表达式
那比如说这边有几个句子
定义了cπ这两个变量
那么πpi=3.14159
c=sin(pi/4)
所以变量参与了运算
变量放在等号左边
又被改变了它存储的值
把这样的过程称为变量赋值
那么可以看到这个变量赋值
它是有一些
很鲜明的特点的
第一变量一定要先被定义
才能被使用
第二如果你定义变量时候的值
我们把它称为定义的初始化
第三在等号左边的量
称为是被赋值的量
这样一个赋值其实是
用一个新的值去冲掉
原来老的值
或者说冲到内存里面
原来的那些二进制位
把它覆盖掉
第四呢在等号右边的量
是被读取的或者
说被使用的一种变量
它的值读取出来
用于那些计算的过程
读取变量的值
是对它内容不会发生改变的
第五个呢
变量右边的表达式
它里面出现的所有的变量
都是保持原来的值不变
这是在我们变量赋值
或者运算的语句里面
关于变量的一些特点
那下面我们看一个动画
这个动画讲解了一个变量
它赋值的一个动态的过程
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测