首页 > 代码库 > 第三章 数据处理

第三章 数据处理

第三章  处理数据

3.1  简单变量

  3.1.1  变量名

    C++标识符命名规则如下:

      ●  在名称中只能使用字母字符、数字和下划线

      ●  名称的第一个字符不能是数字

      ●  区分大写字母和小写字母

      ●  不能将C++关键字用作名称

      ●  以两个下划线或下划线和大写字母开始的名称被保留给实现(编译器及其资源)使用,以一个下划线开头的名称被保留给实现(库函数的实现)。

      ●  C++对名称的长度没有限制,但是某些平台有限制

    3.1.2  命名方案

    在变量名中使用变量类型作为前缀是好的习惯。例如整形变量可是使用n或者int的前缀、布尔型使用b前缀、指针使用p前缀、字符型使用c前缀、字符串型使用str或者sz前缀等。

3.2  整型

    3.2.1  short, int, long 和 long long

    short, int, long 和 long long的比特位数有如下约定:

    ●  short至少为16位

    ●  int至少与short一样长

    ●  long至少为32位,且至少与int一样长

    ●  long long至少为64位,且至少与long一样长

    说明: 1. 可以使用sizeof运算符检查类型的长度;

          2. 在climits头文件中包含了关于整型的限制信息。

3.2.2  初始化方式

       C语言的初始化方式有:

    int i = 5;        //使用常量初始化
    int j = i; //使用变量初始化
    int k = i + j; //使用表达式初始化

       C++特有的初始化方式:

     int l(100);        //使用小括号

       C++11初始化方式:

    int m = { 10 };    //使用大括号
    
int n{ 10 }; //使用大括号并省略等号

 

3.2.3  无符号类型

    无符号类型有unsigned short、unsigned int、unsigned long、unsigned long long。

3.2.4  选择类型

    int被设置为对目标计算机而言最“自然”的长度。这里“自然”是指计算机处理起来最快的长度。所以如果没有其他理由应当尽量使用int。

3.2.5  字面值

    如果第一位是1~9,则表示十进制;

    如果第一位是0,第二位是1~7,则表示八进制;

    如果第一位和第二位是0X或0x,则表示十六进制;

    整型字面值默认为int型(除非字面值过大或者加了表示其他类型的后缀);

    整型字面值加上后缀可以表示其他类型;

    L或者l表示long型,U或者u表示unsigned,ul(顺序和大小写任意)表示unsigned long型,ull表示unsigned long long型。

3.2.6 char型:字符和小整数

    默认的,char既不是有符号的也不是没有符号的。是否有符号取决于C++的具体实现。但是可以手动指定符号,使用signed char和unsigned char。

       C++11新增:

            1)        wchar_t。wchar_t有足够的空间,可以表示系统使用的最大扩展字符集。

            2)        char16_t。表示无符号16位。

            3)        char32_t。表示无符号32位。

    字符字面值用单引号括起来。如’a’和’A’。

    通用字符名。通用字符集是由ISO制定的ISO 10646标准所定义的字符编码方式。的用法类似于转义序列。通用字符名以\u或者\U开始。\u后面跟4个十六进制数,使用2个字节,。\U后面跟8个十六进制数,使用4个字节。

3.2.7  bool类型

      C++将0值解释为假,将其他值解释为真。

  关键字true值为1;

  关键字false值为0。

3.2.8  const限定符

    用法如:

    const int MONTHS = 12;        //符号常量

       C语言使用#define定义符号常量。

       C++应使用const限定符。

3.3  浮点型

    3.3.1  浮点数的书写

        1)        标准小数点表示法

          如: 12.34

        2)        E表示法

          如:2.52e+8、2.3E-4

3.3.2  C++中的浮点数

       C++提供了三种浮点数:

      ●  float。至少32位。

      ●  double。至少48位,且不少于float。一般为64位。

      ●  long double。至少和double一样多。一般为128位。

3.3.3  浮点常量

    浮点字面值默认为double型。可用加入后缀表述其他类型。

    加f或者F后缀为float型,加l或者L后缀为long double型。

3.4  类型转换

    3.4.1  自动类型转换

    遇到以下三种情形,C++自动执行类型转换:

        1)        将一种算术类型的值赋给另一种算术类型的值

        2)        表达式中包含不同的类型时

        3)        将不同于形式参数的实参传递给函数时

    注意:C++11中,使用初始化列表时,初始化不允许缩窄(narrowing)。如

    char ch = { 31325 };    //错误

       C++11中,算术表达式的自动转换使用的校验表如下:

            1)        如果有一个操作数的类型时long double,则将另一个操作数转换为long double。

            2)        否则,如果有一个操作数的类型是double,则将另一个操作数转换为double。

            3)        否则,如果有一个操作数的类型是float,则将另一个操作数转换为float。

            4)        否则,说明操作数都是整型,因此执行整型提升。

            5)        在这种情况下,如果两个操作数都是有符号或无符号的,且其中一个操作数的级别比另一个低,则转换为级别高的类型。

            6)        如果一个操作数是有符号的,另一个操作数为无符号的,且无符号操作数级别比有符号操作数级别高,则将有符号操作数转换为无符号操作数所属的类型。

            7)        否则,如果有符号类型可表示无符号类型的所有可能取值,则将无符号操作数转换为有符号操作数所属的类型。

            8)        否则,将两个操作数都转换为有符号类型的无符号版本。

    3.4.2  强制类型转换

       C++允许通过强制类型转换机制显示地进行类型转换。

    强制转换的通用格式如下:

    typeName (value);    (typeName) value;

    也可以使用C++的static_cast,格式如下

    static_cast<typeName>(value);

    3.4.3  C++11中的auto声明

       C++11新增一个工具,让编译器能够根据初始值的类型推断变量类型。定义了auto的含义。如:

      auto x = 0.0;        //x的类型是double

 

第三章 数据处理