C++ 学习笔记之(2)-变量、类型和限定符
注释
C++中有两种注释
- 单行注释:双斜线
//
开始,以换行符结束,可以包含任何文本,比如额外的双斜线 - 多行注释:界定符界定,以
/*
开始,以/*
结束,可以包含除*/
外的任意内容,包括换行符。
注意:注释界定符不能嵌套,否则会发生错误
数据类型
C++提供了一组内置数据类型,程序员也可以定义自己的数据类型,即类类型。基本数据类型包括算数类型和控类型。算数类型又分为两类:整形和浮点型。
- 基本的字符类型
char
可以存放机器基本字符集中任意字符对应的数值,故char
类型通常一个字节,其他字符类型用于扩展字符集,比如wchar_t
用来确保存放机器最大扩展字符集中的任意字符,比如汉字等。char16_t
和char32_t
为Unicode
字符集服务。 - 除字符和布尔类型外,其他整型用于表示不同尺寸的整数,
short <= int <= long <= long long
,long long
为C++11
新特性。 - 浮点型可表示单精度、双精度和扩展精度值,即
float
,double
和long double
, bool
类型表示真值true
和false
。可以将算术类型的任何值赋给bool
对象。0
值算术类型代表false
,任何非0
的值都代表true
无符号类型和带符号类型
除去布尔型和扩展字符型外,其他整形可以分为带符号
和无符号
类型。
带符号
类型表示正数、负数和0
,无符号
类型仅能表示大于等于0
的值。类型
int
、short
等为带符号类型,前面加unsigned
表示无符号类型。类型unsigned int
可以缩写为unsigned
- 执行浮点数运算选用
double
,因为float
通常精度不够,且两者计算代价相差无几。
类型转换
对象的类型定义了对象包含的数据和能参与的运算,大多数类型都支持类型转换,即比如给某类型对象赋值其他类型值,会自动进行类型转换。
- 若赋给无符号类型一个超出范围的值时,结果是初始值对五福哈类型表示数值总数取模后的余数。比如
-1
赋值给unsigned char
类型即表示区间为0 - 255
, 结果为255
- 当赋值给带符号类型一个超出表示范围的值时,结果是未定义的。
- 切勿混用带符号类型和无符号类型,因为带符号类型会自动的转换成无符号类型。
字面值常量
形如42
的值被称为字面值常量,字面值常量的形式和值决定了它的数据类型
整形和浮点型字面值
- 整型字面值可以是十进制数、八进制数或者十六进制数的形式,以
0
开头的整数代表八进制数,以0x
或0X
开头的代表十六进制数。 - 整型字面值的具体类型由值和符号决定。默认十进制字面值为无符号数,其他不确定。十进制字面值的类型是
int
、long
和long long
中能容纳下当前值最小的那个。八进制和十进制字面值的类型是容纳其数值的无符号类型的最小者,即int
、unsigned int
等 short
没有对应字面值- 默认浮点型字面值是一个
double
,表现为一个小数或以科学计数法表示的指数,其中指数部分用E
或e
标识
字符和字符串字面值
由单引号括起来的一个字符成为char
型字面值,双引号括起来的零个或多个字符为字符串型字面值。
字符串字面值的类型实际上是由常量字符构成的数组,结尾处添加一个空字符
\0
,故实际长度比内容多1
有两类字符不能直接使用,分别是不可打印字符,比如退格或其他控制字符;另一类是C++中有特殊含义的字符比如单引号、问号等。可以使用转义序列。
两个相邻的字符串字面值若仅由空格、缩进和换行符分割,则他们实际为一个整体。比如某字符串字面值较长,可分开书写在多行
std::cout <<