C++Primer第五版:默认初始化问题

如果定义变量时没有指定初始值,则变量被默认初始化,此时变量被赋予“默认值”。

分两种情况:函数体内部初始化与函数体之外初始化。

函数体之外初始化无论什么类型的变量都会有对应的固定的默认值。但是函数体内部初始化时,C++的基本内置类型的变量将被赋予一个随机值!

根据《C++Primar(第5版)》2.1可知,C++的基本内置类型包括算术类型和空类型:算术类型包括:整形数、浮点数、字符,布尔值,如下图所示;空类型如函数返回值类型void。 注意,string类型不属于基本内置类型

所以如果有以下代码:

#include<iostream>
using namespace std;
#include<vector>
#include<string>

//以下注释为变量默认初始化之后的值
//(1)函数体之外的变量
int i;// 0
char c;// '\0'
string s;// ""
bool b;//false
int main()
{

	//(2)函数体之内变量
	int i2;// -858993460
	char c2;// -52'?'
	string s2;// ""
	cout << endl;
	system("pause");
	return 0;
}

默认初始化之后的结果在注释中,可以看到对于基本内置类型(int char等),在函数体内部默认初始化时会产生一个随机的值。对于非基本内置类型(string等),无论是在函数体内部还是外部,默认初始化产生的值都是一样的,不存在“随机”问题。、

结论:函数体内部的基本内置类型变量必须初始化!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值