C++ 入门教程(七) auto、decltype、常量、类型后缀 和 const

古银有了个人博客了:小古银的官方网站
auto
auto 曾经有一种很古老的用法,但是已经很久很久很久没人用了,那种古老的用法已经被废弃了,取而代之的是新功能: 自动类型推导
自动类型推导很 简单,而且很 常用。他根据等号右边的值推导出变量的类型。
注意:C++是强类型语言(意思是所有变量在编译成程序前已经确定好类型和大小),所以auto定义的变量必须初始化,根据初始值类型确定变量的类型和大小。
int main(void)
{
	// auto 定义变量并根据初始化时, 等号右边的类型推导出变量类型

	auto a = 123; // 变量a的类型是int
	auto b = 1.234; // 变量b的类型是double

	short c = 12;
	auto d = c; // 因为变量c是short, 所以变量d的类型是short
	
	// auto 的作用:
	// 相对于 long long var = ...  
	// 少写了几个字母  
	auto var = 10'0000'0000'0000'0000;

	// 以下是 auto 的错误用法, 因为C++是强类型语言
	// 而变量e没有初始值所以推导不出类型
	// 因此产生编译错误
	// auto e;

	return 0;
}

decltype

当变量不需要或者不能初始化( 写程序时议变量初始化)但需要和其他某个变量类型一致时,使用decltype关键字。
(decltype常用在不知道类型的变量上(类型在编译时还是知道的。。。有点矛盾 - -),例如很后面很后面将要介绍的 模板 (如果有空写的话。。。))
int main(void)
{
	// auto 定义变量并根据初始化时, 等号右边的类型推导出变量类型
	// decltype 根据圆括号内变量的类型定义新的变量

	auto a = 123; // 变量a的类型是int
	auto b = 1.234; // 变量b的类型是double

	short c = 12;
	auto d = c; // 因为变量c是short, 所以变量d的类型是short

	decltype(a) e; // 因为变量a类型是int, 所以e的类型也是int
	decltype(c) f; // 因为变量c类型是short, 所以f的类型也是short
	decltype(f) g = 23; // 因为变量f类型是short, 所以g的类型也是short

	return 0;
}

常量

常量指程序不能改变的固定值。
int main(void)
{
	// 数字都是常量, 因为数字都是固定值
	1;
	2;
	0;
	1.234;

	return 0;
}

类型后缀

在数值后面加上后缀,来说明数值的类型。
注意:类型后缀不区分大小写。
int main(void)
{
	// 类型后缀跟在数值后面, 用于说明数值的类型
	// 类型后缀不区分大小写

	11L; // 11被说明成long

	auto var0 = 11; // 变量var0的类型是 int
	auto var1 = 11L; // 变量var1的类型是 long
	auto var2 = 22ll; // 22LL, 变量var2的类型是 long long
	auto var3 = 33u; // 变量var3的类型是 unsigned int
	auto var4 = 4.0f; // 变量var4的类型是 float
	auto var5 = 5.0; // 变量var5的类型是 double
	auto var6 = 66.6L; // 变量var6的类型是 long double

	return 0;
}

const

const 型的变量不能被程序修改,然而能被赋予初始值。
当 const 型变量被初始化一个常量后,该 const 型变量相当于一个常量。
const int a = 10; // 可以将 a 看作一个常量

const 的用法:
int main(void)
{
	const int a = 10; // 常量a
	const int b = a; // 常量, const int b = 10;

	int c = 66;
	c = 44;

	/*
	这里省略一堆对c的赋值
	c = ....
	*/

	// 因为c不是常量, 所以d不是常量, const int d;
	// 好处在于当 d 不需要被修改时, 加 const 防止后面写代码误操作
	const auto d = c;

	return 0;
}

const 的作用:
  1. 对不需要改变的变量加 const,可以防止写代码时不小心手抖了一下,改变了某个变量的值。当试图改变 const 变量的值时,编译器编译时报错。
  2. 当程序多个地方需要同一个相同的数时,用 const 在适当的地方定义变量保存,以后修改就不需要改几处代码,而且编译器会优化常量。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值