C++学习笔记——数据、变量和计算
参考书籍:《Visual C++ 2012 入门经典》
一. C++程序结构
C++程序由一个或多个函数组成。每个程序都包含函数main(),程序执行始于该函数。
根据程序是否使用Unicode字符,它允许函数的名称是main或wmain(Microsoft专有)。符合C++标准的主函数名称是main。
1.1 新建Win32项目(空项目)
1. 文件 -> 新建项目 -> 模板 -> Visual C++ -> Win32控制台应用程序
名称和位置可以自己修改,其他默认,点击<确定>,进入到<Win32应用程序向导>。
2. Win32应用程序向导 -> 下一步 -> 控制台应用程序(应用程序类型) -> 空项目(附加选项) -> 完成(其他均不勾选)
此时,已创建一个项目,其中不包含任何文件。
注:在<项目 -> 项目名称##属性 -> 配置属性 -> 常规 -> 字符集>中,默认使用的是Unicode字符集,这将允许非标准的主函数名(如wmain、_tmain等),编译器会自行转换;如果将此项设为未设置,则程序中只允许出现函数名为main的主函数。
1.2 名称空间
名称空间是C++的一种机制,防止相同的名称用于不同的事情而出现问题。
名称与名称空间之间的关系就相当于名和姓的关系。
利用两个冒号::(作用域解析运算符)将名和姓联系起来。
所有的标准库工具都定义在名为std的名称空间中。如:std::cout
另外,可以使用using声明来指定”姓“作用域之内的所有未指定姓的”名“属于该姓。
如:using std::cout
在后续语句(std作用域内)中单独出现的cout都是属于标准名称空间。
1.3 程序语句
程序语句都以一个分号结束。(注意与行的区别。)
1. 流
输入的来源或输出的目的地称为流。
名称cout指定“标准的”输出流,运算符<<表明出现在该运算符右边的内容将发送到输出流cout。<<表明数据流动的方向。
1.4 空白
空格、制表符、换行字符、换页字符和注释均视为空白。
1.5 预编译的头文件
若在1.1中第2步,配置Win32应用程序向导时,直接选择完成,则完成创建之后,其中将会包含几个文件(而不是空项目):
自命名.pp,stdafx.pp,stdafx.h,targetver.h。
其中stdio.h是老式(即C语言中)的I/O头文件
tchar.h是Microsoft特有的头文件,定义文本函数。
stdadx.h的思想是编译一次,每次修改代码时(不是修改头文件),都不用重新编译。如果打开了预编译头文件项目选项(标准控制台程序的默认选项),编译器就只在stdadx.h改变时重新编译它。一些标准库头文件非常大,这个功能显然可以减少编译时间。
二. 定义变量
2.1 命名变量
标识符或者称为变量名,是赋予变量的名称。
变量名包含字母、数字、下划线,以字母或下划线开头。区分大小写。
2.2 声明变量
变量声明是一个程序语句,它指定给定类型的变量的名称。
而为了存储数据,不仅需要定义变量的名称,而且需要将一段计算机内存与变量名关联起来,这一过程称为变量定义。
变量声明也是一个变量定义。(除某些情况外)
区别:引用性声明是指定名称,定义性声明是指定内存地址。
例:
int ivar; 既是声明也是定义
extern int ivar; 只是一个引用性声明
2.3 变量初始化
将初始值赋给变量的变量声明称为初始化。
int ivar = 0;
在C++中,初始化还有另一种方法,称为函数表示法。
int ivar(0);
2.4 基本数据类型
基本类型分为3类:
- 存储整数的类型
- 存储非整数值的类型(也称为浮点类型)
- 指定空的值或不指定任何类型的void类型
默认下,所有类型(除char外)均为有符号类型signed。
类型 | 字节数 |
---|---|
bool | 1 |
char | 1 |
wchar_t | 2 |
short (int) | 2 |
int | 4 |
long (int) | 4 |
long long (int) | 8 |
float | 4 |
double | 8 |
long double | 8 |
2.4.1 整型 int
可以使用十进制、八进制、十六进制赋值。
十进制:int ivar = 17;
八进制:int ivar = 021;
十六进制:int ivar = 0x11;
2.4.2 字符型 char
字符型可以存储整数或者ASCII码。
char cvar = 'A';
char cvar = 65;
2.4.3 布尔类型 bool
布尔型变量只能有两个值:true(真)、false(假)。
被认为是整型。
2.4.4 浮点型 float
不是整数的数值将作为浮点数字存储。
浮点常量必须包含一个小数点、一个指数或两者都有。
指数形式:1.125E2 = 1.125 * 10^2
常量若无 f 后缀则默认是double类型。
2.4.5 字面值
所有种类的常数都称为字面值。
不能指定short型或unsigned short型字面值。
2.4.6 定义数据类型的同义词 typedef
typedef short int uint_16;
2.5 基本I/O操作
2.5.1 从键盘输入 std::cin
标准输入流cin从键盘获得输入,这时使用流的析取运算符>>。