9.变量的存储类型-auto变量
9.1 知识点
变量的存储类型是什么意思
我们之前学习的变量,主要学习了14种变量类型、常量 const
、变量的作用域等知识。而这节课要开始学习的变量的存储类型,是在声明变量时,在前面加上 auto
、static
、register
、extern
四种存储类型关键词。它们决定了变量的存储位置、生命周期、作用域以及默认的初始值。
就像常量关键字 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