C++ Primer Plus第二&三章笔记

第二章

//my first.cpp

#include<iostream>        //头文件
int main()                //函数头
{                        //函数体的开始
    using namespace;    //命名空间,使定义可见
    cout<<"Hello";        //打印信息到屏幕
    cout<<endl;            //新起一行
    cout<<"World!<<endl;//更多输出
    return 0;            //结束main()
}                        //函数体的结束
  • 注释:C++注释以//打头,到行尾结束。注释可以位于单独一行,也可与代码同一行。C风格注释以/*开头,*/结束,可以跨越多行。两种风格注释都可以使用。

  • 预处理编译指令 #include:预处理器将头文件的内容添加到程序中。

  • 函数头:int main(),描述的是main()与操作系统之间的接口。通常,main()被启动代码调用,启动代码是由编译器添加到程序中的。这里无函数参数,函数返回类型为int

  • 编译指令 using namespace:名称空间。类、变量和函数是C++编译器的标准逐渐,它们都被放在名称空间std中。仅当头文件没有扩展名h时,情况才是如此。用std可以替代std::cout,std::endl等。所有名称可见。

  • 函数体 { }

  • 使用C++的cout输出信息:与printf()相比,cout能够识别和显示所开发的新数据类型,不需要再打印之前指明数据类型,更灵活。默认情况下,cout十进制格式,如果按八进制或者十六进制打印:
    cout<<hex;
    cout<<+要打印的变量(16进制);
    cout<<oct;
    cout<<+要打印的变量(8进制);

  • 使用C++的cin输出信息:cin<<

  • 结束main()函数的return语句

  • 在多函数程序中使用using编译指令

    using namespace std;//放在函数外面

第三章

C++数据类型

内置数据类型

  1. 整形shortintlonglong long

    计算机内存是由位(bit)的单元组成,每种数据类型所占位数不一样,这取决于具体的操作系统。C++提供了一种灵活的标准,确保最小长度

    short至少16位;
    int至少与short一样长;
    long至少32位,且至少与int一样长;
    long long至少64位,且至少与long一样长。

    sizeof()可以返回数据类型的字节长度。在climits(老式实现为limits.h)包含了整形限制的信息,如INT_MAXint的最大取值,SHRT_MAX,LONG_MAX,LLONG_MAX

#include<iostream>
#include<climits>
using namespace std;
int main()
{
    int n=INT_MAX;
    int nm=INT_MIN;
    short s=SHRT_MAX;
    short sm=SHRT_MIN;
    long l=LONG_MAX;
    long lm=LONG_MIN;
    long long ll=LLONG_MAX;
    long long llm=LLONG_MIN;
    cout<<"short is:"<<sizeof(s)<<"bytes"<<endl;
    cout<<"int is:"<<sizeof(n)<<"bytes"<<endl;//对非int类型,sizeof的括号可写可不写
    cout<<"long is:"<<sizeof(l)<<"bytes"<<endl;
    cout<<"long long is:"<<sizeof(ll)<<"bytes"<<endl;
    cout<<"Value range:"<<endl;
    cout<<"short:"<<sm<<"-"<<s<<endl;
    cout<<"int:"<<nm<<"-"<<n<<endl;
    cout<<"long:"<<lm<<"-"<<l<<endl;
    //cout<<"long long:"<<llm<<"-"<ll<<endl;
    return 0;
}

测试机器:32位Windows7

  1. 无符号类型
    前面4种整形都有一种不能存储负值无符号变体,其优点是可以增大变量能够存储的最大值。

    unsigned short:[0,2^16-1]
    unsigned int或unsigned:[0,2^32-1]
    unsigned long:[0,2^32-1]
    unsigned long long:[0,2^64-1]

以上结果基于32位Windows7系统

  1. char类型:字符和小整数(比short更小的整形)
  2. unsigned charsigned charunsigned char类型表示范围0-255signed char表示范围是-128-127。但char本身还是没有符号的。
  3. bool类型:与C一致
  4. 浮点类型floatdoublelong double

    float至少32
    double至少32
    long double通常为8096128

三种类型的指数范围至少是-37+37

浮点常量:
`1.234f`/`2.45E20F` //float常量
`2.345324E28`       //double常量
`2.2L`              //long double常量

常量定义

在C++中,用限定字const+常量数据类型+常量名定义常量,与C中用#define定义不同。

运算符

+-*/%
注意/运算,如果两边都是int,则结果也是int;如果一边是浮点型,则结果也是浮点型。–这点在《算法入门经典》里也有提到,非常重要!!!

aotu声明

C++ 新增工具,让编译器能够根据初始值的类型推断变量的类型。
auto n=100;//n is int
auto x=1.5;//x is double
auto y=1.3e12L;//y is long double