c++ Primer Plus(第三章)

第三章

1.变量名

  • c99(标准c)中只保证名称的前63个字符有意义,前63个字符相同的名称被认为是相同的,c++对名字长度没有限制(但某些平台会有限制)
  • c++中以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的被保留给实现,用作全局标识符(例:如果使用_time_s,_Doun等变量名,编译器不会报错,但会导致行为不确定性)

2.变量长度
+short,long,int等并不总是保证16,32,32.但是c++标准保证了最小长度,即 short 至少16位,int与short至少是一样长,long至少32为,且至少与int一样长,long long至少64位,且至少和long一样长

3.sizeof运算符

  • 对于sizeof运算符(算内存)对类型名必须要放入括号中,但是对 变量名,括号是可选的

4.头文件climits(极限数据头文件)

  • 头文件climit 定义了符号常量来表示类型的限制 比如INT_MAX表示int的最大值,比较常用的有 INT_MIN(int最小值) ,UNIT_MAX(无符号int最大值),LLNOG_MAX(long long最大值),ULLNOG_MAX(无符号long long最大值)等

5.c++变量初始化

  • c++还包含一种与C语言不同的初始方法
    1
    2
    3
    4
    5
    int a=10;
    int b(100);//The New
    int c{12};
    int v={12};
    int e={};//e=0

6.无符号类型

  • unsigned 本身是 unsigned int的缩写

7.c++记数方式

  • c++能够和C语言一样,以8,10,16进制计数,如果第一位是1-9,那么基数是10,如果第一位是0,第二位是1~7,基数是7,如果前两位是0x或者0X,那么是十六进制;

8.c++常量

  • cout<<12;c++除非有理由(数太大或者后缀)存储为其他类型,则一般存储为int
  • 后缀LU,UL均表示无符号整数,与顺序无关

8.基于字符的8进制与16进制转义

  • Ctr+Z的ASII码为26,对应八进制为032,16进制为0x1a,,用单引号括起,即对应编码,如’\037’

9 bool

  • c++中,任何数字值和指针值都可以被转换为(隐式)为bool,非零为true,零为false。而bool值true转换为1,false为0

10.浮点数

  • 浮点数可以表示为234.0等价于2.34E(e)2(表示2.34与10^2相乘的结果),同时数字必须紧挨,不能有空格,比如 2.34 E2是错误的

11.浮点数的输出

  • cout输出一般会省去浮点数结尾的零,使用cout.self(ios_base::fixed,ios_base::floatfield);可以覆盖掉

12.浮点数常量

  • long double的后缀是 l或者L,float是f或者F,c++默认是double

13.c++求模

  • 如果两操作数有一个负数,那么运算满足 (a/b)*b+a%b=a;
  • 两操作数都因该是整数,浮点数会编译错误
  1. 浮点数精度问题
  • float保证6位精度,double保证15位精度

15.类型转换

  • 浮点数转换成整数不仅仅可能小数丢失,而且浮点数的整数值也可能超过int范围
  • c++还可以使用{}来初始化,这种初始化不允许出现精度丢失现象,比如浮点数赋予个整形,相同类型或者精度向上提升的的赋值可能被运行,条件是编译器知道会被正确赋值
  1. c++auto
  • 在初始化声明中,如果使用auto,而不指定关键字类型,编译器将把变量类型设置为与初始值相同
  • 1
    2
    3
    4
    auto n=100;//n is int
    auto a= 100.1//a is double
    double x=0;/x=0.0 is double
    auto y =0;//y=0,y is int