9.auto变量

9.变量的存储类型-auto变量


9.1 知识点

变量的存储类型是什么意思

我们之前学习的变量,主要学习了14种变量类型、常量 const、变量的作用域等知识。而这节课要开始学习的变量的存储类型,是在声明变量时,在前面加上 autostaticregisterextern 四种存储类型关键词。它们决定了变量的存储位置、生命周期、作用域以及默认的初始值。

就像常量关键字 const 一样,可以让变量有一些特殊的使用规则。

auto变量

作用

auto 是用于让编译器自动推断变量的类型。

生命周期

与变量的规则一致。

优点

  • 可以减少手动定义类型的麻烦,提高代码的简洁性。

缺点

  • 影响代码可读性,必须在声明时进行初始化,否则编译器无法推断类型。

注意

在初学阶段,不太建议频繁使用 auto,因为不太有利于查看逻辑。

举例说明

int i = 10;
auto j = 11;
cout << "j的类型为: " << typeid(j).name() << ", 值为: " << j << endl; // j的类型为: int, 值为: 11
auto str = "123123";
cout << "str的类型为: " << typeid(str).name() << ", 值为: " << str << endl; // str的类型为: char const* __ptr64, 值为: 123123
auto k = 29;
auto k2 = j + k;
cout << "k2的类型为: " << typeid(k2).name() << ", 值为: " << k2 << endl; // k2的类型为: int, 值为: 40
auto n = 'A';
cout << "n的类型为: " << typeid(n).name() << ", 值为: " << n << endl; // n的类型为: char, 值为: A
int a = 10;
double b = 3.5;
auto result = a * b;
cout << "result的类型为: " << typeid(result).name() << ", 值为: " << result << endl; // result的类型为: double, 值为: 35

9.2 知识点代码

Lesson09_变量的存储类型_auto变量.cpp

#include <iostream>
using namespace std;
int main()
{
    std::cout << "变量的存储类型-auto变量\n";

    #pragma region 知识点一 变量的存储类型是什么意思

    //我们之前学习的变量
    //主要学习了14种变量类型,常量const,变量的作用域 等等知识
    //而这节课要开始学习的变量的存储类型
    //是在声明变量时,在前面加上
    //auto、static、register、extern四种存储类型关键词
    //它们决定了变量的存储位置、生命周期、作用域以及默认的初始值

    //就好像常量关键字 const 一样,可以让变量有一些特殊的使用规则

    #pragma endregion

    #pragma region 知识点二 auto变量
    //自动变量
    //作用:
    // 让编译器自动推断变量的类型
    //生命周期:
    // 和变量的规则一致

    //优点:
    // 可以减少手动定义类型的麻烦,提高代码的简洁性
    //缺点:
    // 影响代码可读性,必须在声明时进行初始化,否则编译器无法推断类型
    //注意:
    // 在初学阶段,不太建议频繁使用auto,因为不太有利于查看逻辑

    //举例说明:
    int i = 10;
    auto j = 11;
    cout << "j的类型为: " << typeid(j).name() << ", 值为: " << j << endl;//j的类型为: int, 值为 : 11

    auto str = "123123";
    cout << "str的类型为: " << typeid(str).name() << ", 值为: " << str << endl;//str的类型为 : char const* __ptr64, 值为 : 123123

    auto k = 29;
    auto k2 = j + k;
    cout << "k2的类型为: " << typeid(k2).name() << ", 值为: " << k2 << endl;//k2的类型为 : int, 值为 : 40

    auto n = 'A';
    cout << "n的类型为: " << typeid(n).name() << ", 值为: " << n << endl;//n的类型为 : char, 值为 : A

    int a = 10;
    double b = 3.5;
    auto result = a * b;
    cout << "result的类型为: " << typeid(result).name() << ", 值为: " << result << endl;//result的类型为 : double, 值为 : 35

    return 0;
    #pragma endregion
}

9.3 练习题

auto关键字的作用是什么?必须遵守的规则是什么?

  • 用于声明自动变量
  • 声明自动变量时必须初始化,因为需要通过初始化值来推导类型

以下代码请问result将被推导为什么类型?为什么?

int a = 10;
double b = 3.5;
auto result = a * b;
  • result 将被推导为 double 类型。

  • 由于在 C++ 中进行数学运算时,变量的类型会自动进行类型提升,int 类型的 a 会被提升为 double,计算结果也将是 double 类型。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏