学习笔记三:C++ 变量和数据类型

124 阅读3分钟

C++ 数据可分为常量和变量两大类;

常量

常量是程序运行过程中不变的量;
变量是在程序运行过程中可发生变化的值;
常量和变量必须遵循 先声明,后使用  的原则;

常量可以是:

  • 字面常量
  • 使用关键字const 声明的常量
  • 使用关键字constexpr声明的常量表达式
  • 使用关键字enum 声明的枚举常量
  • 使用#define 定义的常量(已废弃)

声明常量
根据书写形式常量可分为 符号常量直接常量
直接常量 如:123,3.14,“a”, "&"
符号常量 如:const  float  pi=3.1415926\

根据常量的定义方法区分 常量可分为:

  • const常量
    const <类型名> <常量名> = <表达式>
  1. 必须以const开头
  2. 常量名为标识符
  3. 表达式应与常量类型一致
  • 宏常量
    #define <宏名> <常量>
  1. 宏名可以是简单的字符名,也可以是带有参数的函数名
  2. 常量可以是数值,字符串和函数等

变量\

    变量声明\

           [<存储类>]<类型名或类型定义> <变量名表>

    存储类 是指变量的存储位置 一般来说有以下4种类型

  • auto      一次性存储,其存储空间可被若干变量多次覆盖使用
  • register  存放在通用寄存器中
  • extern    在所有函数和程序段中都可引用
  • static     在内存中是以固定地址存放的,在整个程序运行期间都有效

        类型名或类型定义指的是变量所属的数据类型 ,一般来说指的           是基本数据类型和枚举类型,在任何变量说明语句中,不可缺少

        变量名表是指声明变量的变量名称,此外,在变量的声明语句中,可以对该变量赋初值, 变量名表格式主要有以下三种:

  1. <变量名>\
  2. <变量名>=<表达式>\
  3. <变量名1>=[<表达式1>],<变量名2>=[<表达式3>],....
    int a;
    char b ='A';
    float c=2.5,d,e=56.1;

 变量命名规则

       必须遵循标识符命名规则,即变量只能由大小写英文字母,下划线,以及阿拉伯数字组成,并且第一个字符必须是大小写英文字母或者下划线,不能是数字

 合法:Student,_str, s_tro,  str2
非法:2str, s-tr ,star$

有符号整数和无符号整数

符号 表示正或符。 内存中所有的数字都以位和字节的方式存储 ,一字节包含 8位,每位 要么存0 要么存1, 因为一字节的内存单元可以有256(2的8次方)个不同的值 如果这些取值是无符号的(即为正数),则一个字节可能取值为0255, 而2个字节可能取值为065535.

Image.png

在这种空间如何表示负数呢?
一种是将1位用作符号位,指出其他位包含的值是正还是负。符号必须是最高有效位,因为最低有效位需要用于表示小于2的数字。

Image.png

确定变量长度sizeOf();
cout << "Size of an int: " << sizeof (int);

使用 auto 自动推断类型

    在有些情况下,根据赋给变量的初始值,很容易知道其类型 ,如果将变量的初始值设置为true ,就可以推断出类型为bool,使用关键字auto     auto conFlippedHeads =true;

使用 typedef 替换变量类型

typedef unsigned int STRICTLY_POSITIVE_INTEGER;
STRICTLY_POSITIVE_INTEGER numEggsInBasket = 4532;

第 1 行告诉编译器,STRICTLY_POSITIVE_INTEGER 就是 unsigned int。以后编译器再 遇到已定义的类型 STRICTLY_POSITIVE_INTEGER 时,就会将它替换为 unsigned int 并继续编译。