欢迎接续学习C++语言程序设计
下面来给大家演示一个实例
好 这个例子是一个补充的例题
以后在这个课程中
我的题号有补充几几的
这些在我的教材上就没有
大家可以参考
我在网上给的学习资料
这个例题就是读入并显示整数
在里面用到的主要知识点
就是用到了常量
常量是在语言程序中
直接写明了数据
还用到了变量
还用到了从键盘输入数据的
这个操作
我们在此之前看到了
怎么样用cout向显示器输出数据
那么在这个例题中呢
我们将要使用iostream类的
预定义好的对象cin
它的提取操作
这个提取操作呢
是从键盘的输入流中提取数据
也叫做标准输入流类的对象
那另外呢 这里面我们还用到了
数据的存储
为了存储数据呢
要为这些数据来分配存储空间
变量定义实际上就是给数据
分配存储空间
好 现在我们来看这段程序代码
我们看到在主函数中
首先定义了一个变量radius
这个变量定义之后并没有初始化
效果会是什么呢
等一会我们会在编译环境中看
然后接下来输入一行提示信息
然后从键盘读入值
放到radius里面
由cin这个对象的提取操作符
来达到这个效果的
然后接下来又是输出提示信息
The radius is
接着我们看到
把radius这个变量自己放到
插入运算符后面去了
也就是放到这个cout
所代表的输出流里面去了
插到输出流里面去
它就送到显示器上了
然后接下来呢
再输出提示信息以及3.14
这个常量
它们都会显示到显示器上
那么后面再输出一行提示信息
请用户输入一个不同的
radius变量值
所以这个地方充分体现了
radius它就是一个变量
可以再次
从键盘读入一个不同的值
放到radius里面
然后我们用cout再输出radius
进行一下验证
好 现在呢
我在这个编译环境中
给大家演示一下这个运行的过程
那么这回我们使用单步调试
在这个调试窗口底下呢
大家看有一个逐过程
有个逐语句
f10是一行一行的直行
等我们学了第3章的函数以后
我会教大家用f11
追踪到函数里面
目前我们用这个热键f10
或者这个菜单项都可以
好 那么进来执行了一个单步了
执行了一个单步
这个时候大家看radius这个变量
是在这儿
但是它的值是无效的数据
不确定的数据
也就是以前碰巧里面
有什么垃圾数据就是什么
那么再走一步
现在我们看radius里面的值
仍然是不确定的
那在这个地方呢
输出一个提示信息
走一步以后我们看一下这个效果
现在这个提示信息已经在这个
命令行窗口中出来了 第一行
Please enter the radius出来了
接下来再执行这一步
再执行一步的话
我们就需要从键盘输入了
大家看执行到这儿
停在这儿等什么呢
等我们在这个窗口
输入一个radius值
比如说我给一个5 回车
大家看现在radius里面有值了
这是5 从键盘读入了
那接下来呢 再往下走一步
我们准备要输出什么 3.14了
在这之前 应该radius输出去了
我们再看一下
The radius is 5 有了
那我们准备输出3.14这个常量了
我们再对照看一下3.14在这儿
有了
接下来再输出一个提示信息
再走一行
就是请输入一个不同的radius值
那现在这个光标
黄色的箭头停在这个前面
表示这一行还没有执行
那么我们必须要再走一步
f10再走一步
它就等我们来输入了
这回比如说我输一个7
然后回车
大家看 这个radius它变成7了
看到变量里面的值变了
现在再输出一行的话
我们就看到运行最终的结果了
我们看到最终这个7
也输出出来了
好 现在呢我们再看一个例子
这个是为常量来命名
也就是说在这里
我们要用符号常量
我们看在主函数
也就是main函数的第一行
定义了一个double类型的常量pi
在double这个数据类型前面
有个const
说明这个pi是一个常量
它必须给一个初始值
这点我们给的3.14159
那其他的部分呢
跟前面的一个补充2_1的
那个例题是类似的
我就不再解释了
那接下来我在这个编译环境中
给大家演示一下
这个常量初始化的效果
好 现在我们在这个编译环境中看一下
这是一个常量的定义
在我return这个语句前面
设了一个断点
这样我就可以用f5
来开始这个调试
并且一直运行到断点情况为止
好 那么现在呢
我们看请输入一个radius值
我们输入一个5 回车
又输入另外一个
跟刚才一样输入一个7 回车
我们看这个pi值
它里面是3.14 什么
我们怎么看到里面
存的是3.1415899999
明明给它这3.14159吗
这个数据
都不能准确地存在里面吗
这是一个很好的例子
大家看到了浮点数在机器里面
是近似存储的
所以它可能会跟你期望的这个值
有少许的差别
所以千万不要在程序中
去比较两个浮点数它是否相等
比如说你认为它应该是相等的
但是它可能有少许的差别
它就不相等了
浮点数都是近似存储的
那么当我们要比较两个浮点数
是否相等的时候
一般是比较它们两个
相减的差是不是充分小
充分小就认为它相等了
这个后面
大家还会遇到这种情况的
现在我们想验证一个什么呢
制造一个错误
这个地方我试图修改一下
不给这个pi初始化看看会怎么样
现在先停止调试
然后我把这个给删掉
好 定义了pi 没有初始化
那我再重新编译
再重新编译这个项目 重新生成
大家看有错误信息了
提示这个pi如果不是外部的
当然我们这个不是外部
是在这里面定义的
则必须初始化常对象
所以这个就不能通过
是要初始化的
那好 现在我把它再加回来
那我再次重新生成
也就是重新编译连接
现在就成功了 现在就成功了
那么如果说我试图在程序中
比如说最后我加一行
重新定义pi pi行不行呢
这个pi有名字吗
我就给它赋值了
看看这回编译能不能通过
大家看 不能给常量赋值
又出错误信息了
所以常量虽然它有名字
跟变量一样有名字
但是你不能在程序中
改变它的值 必须初始化
而一旦初始化以后
它的值是不能再被改变的了
好 恢复以后再重新生成
这回就正确了
好 下面我再讲一个例题
演示这个变量在定义的同时
进行初始化
下面我再这个编译环境中
给大家演示这个例题
好 现在我们来看一下这个程序
跟刚才这个程序是类似的
只不过呢 这回我定义这个变量
radius的时候
也给它了一个初始值是0
给了初始化值以后呢
还是可以从键盘去输入
去改变这个值的
我们简单运行一步看一下
好 现在我们来看到
常量的初始化了
继续往下再走一步
看到这回这个变量radius的值
它就是0了 这就有0这个值了
至于变量在定义的时候
也可以这样初始化的