《C++ Primer Plus》第3章知识点总结
内置的C++类型分两组:基本类型和复合类型。本文将介绍基本类型,即整数和浮点数
简单变量
变量名的命名规则
(1)在名称中只能使用字母字符、数字和下划线(_)
(2)名称的第一个字符不能是数字
(3)区分大写字符和小写字符
(4)不能将C++关键字用作名称
(5)C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台会有长度限制
(6)以两个下划线或下划线和大写字母大头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符
如果想用两个或更多的单词组成一个名称,通常的做法是用下划线字符将单词分开,如 my_onions,或者从第二个单词开始将每个单词的第一个字母大写,如 myEyeTooth
对于大写的变量命名,常在变量名前加一个前缀,常用的前缀有:
n(整数值)
str或sz(表示以空字符结束的字符串)
b(表示布尔值)
p(表示指针)
c(表示单个字符)
整型
(1)short:至少16位
(2)int:至少与 short一样长
(3)long:至少32位,且至少与 int一样长
(4)long long:至少64位,且至少与 long一样长
sizeof():返回类型或变量的长度,单位为字节
对类型名使用该运算符时,应将名称放在括号中(例如 sizeof(int))
对变量名使用该运算符时,括号是可选的(例如 sizeof n_short )
头文件 #include<climits>:包含了关于整型限制的信息,具体来说,它定义了表示各种限制的符号名称。具体如下表
CHAR_BIT char的位数
CHAR_MAX char的最大值
CHAR_MIN char的最小值
SCHAR_MAX signed char的最大值
SCHAR_MIN signed char的最小值
SHRT_MAX short的最大值
SHRT_MIN short的最小值
INT_MAX int的最大值
INT_MIN int的最小值
LONG_MAX long的最大值
LONG_MIN long的最小值
ULONG_MAX unsigned的最大值
ULONG_MIN unsigned的最小值
UNIT_MAX unsigned int 的最大值
USHRT_MAX unsigned short的最大值
UCHAR_MAX unsigned char的最大值
ULLONG_MAX unsigned long long的最大值
C++11初始化方式:以下是几种初始化方式
int hamburgers={24};//hamburgers=24
int emus{7};//emus=7
int rheas={12};//rheas=12
int rocs={};//rocs=0
int psychics{};//pshchics=0
无符号类型不能存储负数值,其优点是可以增大变量能够存储的最大值,一般在整型前加 unsigned表示声明的类型为无符号类型
整型字面值
C++能够以三种不同的计数方式来书写整数:基数为10、基数为8和基数为16。
对于一个数:
如果第一位为1-9,则基数为10(十进制);因此93是以10为基数的。
如果第一位为0,第二位为1-7,则基数为8(八进制);因此042的基数是8,它相当于十进制数的34
如果前两位为0x或0X,则基数为16(十六进制);因此0x42为16进制数,相当于十进制数66
对于十六进制数,字符 a-f 和 A-F 表示了十六进制位,对应于10-15。0xF为15,0xA5为165
下面是一个例子
#include <iostream>
using namespace std;
int main()
{
int chest=42;
int waist=0x42;
int inseam=042;
cout<<"chest = "<<chest<<" (42 in decimal)"<<endl;
cout<<"waist = "<<waist<<" (0x42 in hex)"<<endl;
cout<<"inseam = "<<inseam<<" (042 in octal)"<<endl;
return 0;
}
/*
结果如下:
chest = 42 (42 in decimal)
waist = 66 (0x42 in hex)
inseam = 34 (042 in octal)
*/
除非有理由存储为其他类型(如使用了特殊的后缀来表示特定的类型,或者值太大,不能存储为int),否则C++将整型常量存储为 int类型
cout.put():通过类对象cout来使用函数 put()
简单来说 cout.put()成员函数提供了另一种显示字符地方法,可以替代 <<运算符
例如:cout.put( '$' );这可以打印字符$
C++转移序列的编码
|
char
char在默认情况下既不是没有符号,也不是有符号。是否有符号由C++实现决定
如果将char用作数值类型,则 unsigned char和 signed char 之间的差异将非常重要
unsigned char:表示范围通常为0-255
signed char:表示范围通常为-128到127
wcha_t
程序需要处理的字符集可能无法用一个8位的字节表示,如日文汉字系统。对于这种情况,C++的处理方式有两种,首先,如果大型字符集是实现的基本字符集,则编译器厂商可以将char定义为一个16位的字节或更长的字节。其次,一种实现可以同时支持一个小型基本字符集和一个较大的扩展字符集。8位char可以表示基本字符集,另一种类型wchar_t(宽字符类型)可以表示扩展字符集。wchar_t类型是一种整数类型,它有足够的空间,可以表示系统使用的最大扩展字符集。
cin和cout将输入和输出看作是char流,因此不适于用来处理 wchar_t类型。iostream头文件的最新版本提供了作用相似的工具——wcin和 wcout,可用于处理 wchar_t 流。另外,可以通过加上前缀L来指示宽字符常量和宽字符串。下面的代码将字母P的 wchar_t 版本存储到变量bob中,并显示单词 tall 的 wchar_t 版本
whar_t bob=L'P';
wcout<<L"tall"<<endl;
bool:为逻辑率的数学表示法
在计算中,布尔变量的值可以是 true或 false
const限定符
const关键字用来修改变量声明和初始化,简单来说就是定义常量,比如
const int Months=12;//定义了Months这个常量为12
通用格式为: const type name = value;
注意,应在声明中对 const进行初始化
const int Months;
Months=12;//这种就不太好,初始化太晚了
浮点数 浮点数能够表示带小数部分的数字,它们提供的值范围更大
C++有两种书写浮点数的方法
(1)使用常用的标准小数点表示法:
float:至少32位
double:至少48位且不少于float
long double:至少不少于double
(2)E表示法
其外观像这样:3.45E6,指3.45与1000000相乘的结果;E6指的是乘以10的6次方,E-6指的是除以10的6次方
E表示法中间不能有空格
d.dddE+n指的是将小数点向右移n位,而d.dddE-n指的是将小数点向左移n位
C++算术运算符
基本的算术运算有5种:加法、减法、乘法、除法、求模
类型转换
C++自动执行的类型转换:
(1)将一种算术类型的赋值给另一种算术类型的变量时,C++将对值进行转换
将浮点型转换为整型时,C++采取截取(丢弃小数部分),而不是四舍五入
当你将整数变量初始化为浮点值时,有些编译器会提出警告,指出这可能丢掉数据
(2)表达式中包含不同的类型时,C++将对值进行转换
以最高精度的运算为标准
(3)将参数传递给函数时,C++将对值进行转换
强制类型转换
通用格式为:
(typeName)value ——C语言
typeName(value) ——C++
C++11中的auto声明
这个关键字很少使用
如果使用关键字auto,而不指定变量的类型,编译器将把变量的类型设置成与初始值相同
auto n=100;//n is int
auto x=1.5;//x is double
auto y=1.3e12L;//y is long double