第二章 C++简单程序设计
C++的特点和程序实例
C++字符集和词法记号
-
C++的特点
- 兼容 C,支持面向过程的程序设计;
- 支持面向对象的方法;
- 支持泛型程序设计方法。
-
命名空间
-
避免命名冲突;
-
std 是 C++标准库的命名空间(namespace)名;
-
using namespace std 表示打开 std 命名空间。
#include <iostream> using namespace std; int main() { cout << "Hello!" << endl; cout << "Welcome to C++!" << endl; return 0; }
-
-
字符集
- 大小写的英文字母:A~Z,a~z;
- 数字字符:0~9;
- 特殊字符:! # % ^ & * _ + = - ~ < > / \ ‘ “ ; . , : ? ( ) [ ] { } |。
-
词法记号
- 关键字
- C++预定义的单词。
- 标识符
- 程序员声明的单词,它命名程序正文中的一些实体。
- 文字
- 在程序中直接使用符号表示的数据。
- 分隔符 () {} , : ;
- 用于分隔各个词法记号或程序正文。
- 运算符(操作符)
- 用于实现各种运算的符号。
- 空白符
- 空格、制表符(TAB 键产生的字符)、垂直制表符、换行符、回车符和注释的总称。
- 关键字
-
标识符的构成规则
- 以大写字母、小写字母或下划线(_)开始;
- 可以由以大写字母、小写字母、下划线(_)或数字 0~9 组成;
- 大写字母和小写字母代表不同的标识符;
- 不能是 C++关键字或操作符。
基本数据类型、常量、变量
-
C++能够处理的基本数据类型
- 整数类型;
- 浮点数类型;
- 字符类型;
- 布尔类型。
-
程序中的数据
- 常量
- 在源程序中直接写明的数据;
- 其值在整个程序运行期间不可改变。
- 变量
- 在程序运行过程中允许改变的数据。
- 常量
-
整数类型
- 基本的整数类型:int。
- 按符号分
- 符号的(signed);
- 无符号的(unsigned)。
- 按照数据范围分
- 短整数(short);
- 长整数(long);
- 长长整数(long long)。
- ISO C++标准并没有明确规定每种数据类型的字节数和取值范围,它只是规定它们之间的字节数大小顺序满足: 。
-
字符类型(char)
- 容纳单个字符的编码;
- 实质上存储的也是整数。
-
浮点数类型
- 单精度(float);
- 双精度(double);
- 扩展精度(long double)。
-
字符串类型
- 有字符串常量;
- 基本类型中没有字符串变量;
- 采用字符数组存储字符串(C 风格的字符串);
- 标准 C++类库中的 String 类(C++风格的字符串)。
-
布尔类型(bool)
- 只有两个值:true(真)、false(假);
- 常用来表示关系比较、相等比较或逻辑运算的结果。
-
各基本类型的取值范围
- 常量- 在程序运行的整个过程中其值始终不可改变的量;
- 直接使用符号(文字)表示的值;
- 整数常量
- 以文字形式出现的整数;
- 十进制
- 若干个0~9的数字,但数字部分不能以0开头,正数前边的正号可以省略。
- 八进制
- 前导0+若干个0~7的数字。
- 十六进制
- 前导0x+若干个0~ 9的数字及 A~F 的字母(大小写均可)。
- 后缀
- 后缀 L(或 l)表示类型至少是 long,后缀 LL(或 ll)表示类型是 long long,后
缀 U(或 u)表示 unsigned 类型。
- 后缀 L(或 l)表示类型至少是 long,后缀 LL(或 ll)表示类型是 long long,后
- 浮点数常量
- 以文字形式出现的实数;
- 一般形式:12.5,-12.5等;
- 指数形式:0.345E+2,-34.4E-3;
- 整数部分和小数部分可以省略其一;
- 浮点常量默认为 double 型,如果后缀 F(或 f)可以使其成为 float 型。
- 字符常量
- 单引号括起来的一个字符,如:‘a’、‘D’、’?’、’$’;
- C++转义字符列表(用于在程序中表示不可显示字符):
- C 风格字符串常量
- 一对双引号括起来的字符序列;
- 在内存中按串中字符的排列次序顺序存放,每个字符占一个字节;
- 在末尾添加 ‘\0’ 作为结尾标记。
-
通过添加前缀可以改变字符常量或者字符串常量的类型,前缀及其含义如下表所示:
-
变量
- 在程序的运行过程中,其值可变的量;
- 变量定义:数据类型 变量名 1, 变量名 2, …, 变量名 n;
- 初始化
- C++语言中提供了多种初始化方式;
- int a = 0;
- int a(0);
- int a = {0};
- int a{0}。
- 其中使用大括号的初始化方式称为列表初始化,列表初始化时不允许信息的丢失。
- 例如用 double 值初始化 int 变量,就会造成数据丢失。
-
符号常量
-
常量定义语句的形式为:
- const 数据类型说明符 常量名=常量值;
- 数据类型说明符 const 常量名=常量值;
-
例如,可以定义一个代表圆周率的符号常量:const float PI = 3.1415926;
-
符号常量在定义时一定要初始化,在程序中间不能改变其值。
#include <iostream> using namespace std; int main() { const double pi(3.14159); // 符号常量的定义 int radius; cout << "Please enter the radius!\n"; cin >> radius; cout << "The radius is: " << radius << '\n'; cout << "PI is: " << pi << '\n'; cout << "Please enter a different radius!\n"; cin >> radius; cout << "Now the radius is changed to: " << radius << '\n'; cout << "PI is still: " << pi << '\n'; return 0; }
-
程序举例
-
读入并显示整数
- 常量
- 在源程序中直接写明的数据,其值在整个程序运行期间不可改变,这样的数
据称为常量。
- 在源程序中直接写明的数据,其值在整个程序运行期间不可改变,这样的数
- 变量
- 在运行过程中从计算机的外部设备(例如键盘、硬盘)读取的,这些数据的
值在程序运行过程中允许改变,这样的数据称为变量。
- 在运行过程中从计算机的外部设备(例如键盘、硬盘)读取的,这些数据的
- 从键盘输入数据
- iostream 类的对象 cin 的>>操作,可以从标准输入设备(通常是键盘)读入
数据。
- iostream 类的对象 cin 的>>操作,可以从标准输入设备(通常是键盘)读入
- 数据的存储
-
为了存储数据,需要预先为这些数据分配内存空间;
-
变量的定义就是在给变量命名的时候分配内存空间。
#include <iostream> using namespace std; int main() { int radius; cout << "Please enter the radius!\n"; cin >> radius; cout << "The radius is: " << radius << '\n'; cout << "PI is: " << 3.14 << '\n'; cout << "Please enter a different radius!\n"; cin >> radius; cout << "Now the radius is changed to: " << radius << '\n'; return 0; }
-
- 常量
-
变量的初始化
-
虽然变量的值是可以在运行时获得的,但是在定义变量时也可以进行初始化,而
且应该提倡进行初始化; -
未经初始化的变量,其值可能是随机的。如果误用了未经初始化也没有给予确定
值的变量,就会引起错误。#include <iostream> using namespace std; int main() { const double pi(3.14159); int radius(0); cout << "The initial radius is: " << radius << '\n'; cout << "PI is: " << pi << '\n'; cout << "Please enter a different radius!\n"; cin >> radius; cout << "Now the radius is changed to: " << radius << '\n'; cout << "PI is still: " << pi << '\n'; return 0; }
-