学习《C++程序设计》(第二版) 谭浩强 主编
第三章 程序设计初步
3.4 C++的输入和输出
3.5 编写顺序结构的程序
3.6 关系运算和逻辑运算
3.4 C++的输入和输出
应该说明:
输入和输出并不是C++语言中的正式组成成分
C和C++本身都没有为输入和输出提供专门的语句结构
在C中,输入和输出的功能是通过调用scanf函数和printf函数来实现的
在C++中,是通过调用输入输出流库中的流对象cin和cout实现的
也就是说,输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的
C++的输出和输入是用流的方式实现的
流指的是来自设备或传送给设备的一个数据流
<< 流插入运算符 默认的设备是显示器
>> 流提取运算符 默认的设备是键盘
3.4.1 输入流与输出流的基本操作
3.4.2 在标准输入流和输出流中使用控制符cout<<表达式1<<表达式2<<...;
cin>>变量1>>变量2>>...;
在定义流对象时,系统会在内存中开辟一段缓存区,用来暂存输入输出流的数据
在执行cout语句时,并不是插入一个数据就马上输出一个数据,而是先把插入的数据顺序存放在输出缓冲区中
直到输出缓冲区满或遇到cout语句中的endl(或'\n',ends,flush)(留疑)
在用cout输出时,用户不必通知计算机按何种种类输出,系统会自动判别输出数据的类型,是输出的数据按相应的类型输出
在用cin输入时,系统会根据变量的类型从输入流中提取相应长度的字节
cin:系统会把空格作为数据间的分隔符,不予提取
不能用cin语句吧空格字符和回车换行符作为字符输入给字符变量,它们将被跳过
如果想将空格字符或回车换行符(或任何其他键盘上的字符)输入给字符变量,可以用getchar函数
上面介绍的是使用cout和cin时的默认格式,但有时人们会在输出输入时有一些特殊的要求
C++提供了在标准输入输出流中使用的控制符
如:
dec 设置数值的基数为10
hex 设置数值的基数为16
..........
需要注意的是:如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件
3.4.4 用scanf和printf函数进行输入和输出
在C中是用printf输出,用scanf输入的
scanf(格式控制,输出表列)
printf(格式控制,输出表列)
使用printf和scanf函数进行输出和输入,必须指定输入和输出的数据的类型和格式,不仅繁琐复杂,而且容易出错
3.5 编写顺序结构的程序
如果程序中要用到数学函数,都要包含头文件cmath
3.6 关系运算和逻辑运算
并不是在任何情况下,都要求按照语句出现的顺序执行的,人们往往要求根据某个指定的条件是否满足来决定执行的内容
3.6.1 关系运算和关系表达式
C++的关系运算符有:
1.< 2.> 3.<= 4.>= 优先级相同(高)
5.== 6.!= 优先级相同(低)
关于优先次序:
1.关系运算符的优先级低于算术运算符
2.关系运算符的优先级高于赋值运算符
用关系运算符将两个表达式连接起来的式子,称为关系表达式
关系表达式的一般形式:
表达式 关系运算符 表达式
任何表达式都应该有一个确定的值:
算术表达式的值是一个数值
赋值表达式的值就是赋予变量的值
关系表达式的值就是一个逻辑值
3.6.2 逻辑常量和逻辑变量
在C和C++中都用数值1代表真,0代表假
C语言没有提供逻辑性数据,关系表达式的值用数值1或0代表
C++增加了逻辑型数据。逻辑型常量只有两个,即false和true
逻辑型变量要用类型标识符bool来定义
逻辑型变量在内存中占1个字节,用来存放0或1
如果将一个非零的整数赋给逻辑型变量,则按“真”处理
3.6.3 逻辑运算和逻辑表达式
有时只用一个关系表达式还不能正确表示所指定的条件
C++提供3种逻辑运算符:
1. &&逻辑与
2. || 逻辑或
3. ! 逻辑非
优先级:(从高到低)
!
算术运算符
关系运算符
&&和||
赋值运算符
逻辑运算的结果不是0就是1,不会是其他值
而在逻辑表达式中作为参与逻辑运算的运算对象可以是0或任何非零的数值