对象与基本类型(三)

100 阅读2分钟

类型详述

类型可以划分为基本类型与复杂类型

  • 基本(内建)类型:C++ 语言中所支持的类型

    • 数值类型

      • 字符类型(char, wchar_t, char16_t, char32_t)

      • 整数类型

        • 带符号整数类型:short, int, long, long long
        • 无符号整数类型:unsigned + 带符号整数类型
      • 浮点类型

        • float, double, long double
    • void

  • 复杂类型:由基本类型组合、变种所产生的类型,可能是标准库引入,或自定义类型

  • 与类型相关的标准未定义部分

    • char 是否有符号

    • 整数中内存中的保存方式:大端 小端

    • 每种类型的大小 (间接影响取值范围)

      • C++11 中引入了固定尺寸的整数类型,如 int32_t
int main()
{
    char ch1;
    unsigned char ch2;
    signed char ch3;
}

1.PNG

  • 字面值:在程序中直接表示为一个具体数值或字符串的值
  • 每个字面值都有其类型

2.PNG

  • 可以为字面值引入前缀或后缀以改变其类型

3.PNG

  • 可以引入自定义后缀来修改字面值类型
int operator "" _ddd(long double x)
{
    return (int)x * 2;
}

int main()
{
    int x = 3.14_ddd;
    std::cout << x << '\n';
}
  • 变量:对应了一段存储空间,可以改变其中内容

  • 变量的类型在其首次声明(定义)时指定:

    • int x:定义一个变量 x,其类型为 int
    • 变量声明与定义的区别:extern 前缀
  • 变量的初始化与赋值

    • 初始化:在构造变量之初为其赋予的初始值

      • 缺省初始化
      • 直接/拷贝初始化
      • 其它初始化
    • 赋值:修改变量所保存的数值

  • 为变量赋值时可能涉及到类型转换

    • bool 与 整数之间的转换
    • 浮点数与整数之间的类型转换
  • 隐式类型转换不只发生在赋值时

    • if 判断

    • 数值比较

      • 无符号数据与带符号数据之间的比较

      • std::cmp_XXX (c++20)