2.2.1 变量定义

博客讨论了编程中常见的错误类型,包括未初始化的变量可能导致的运行时问题。解释了为何在声明变量时进行初始化是必要的,特别是对于内置类型如int。还提醒读者,未初始化的本地变量使用可能会导致不可预测的结果,而string类即使未初始化也会默认为空字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
练习2.9:
(a)语法错误,尚未初始化变量。
更改为:

#include <iostream>
using namespace std;


int main() {
	int input_value;
	std:: cin >>  input_value;
	return 0;
}

(b)程序报错,转换未执行,因为3.14是浮点型字面值,而定义的数据类型为整型,存在丢失信息的危险。把一个浮点数赋给整数型,可以,不过进行了近似处理,结果值将仅保留浮点数中小数点之前的部分。但不可以用double的值初始化int变量。

(c)语法错误
未定义wage
更改为:

#include <iostream>
using namespace std;


int main() {
	double salary = 9999.99;
	double wage = 9999.99;
	return 0;
}

(d)程序可以运行,但提示丢失了部分值,输出结果i = 3.

练习2.10:
什么都没有生成

#include <iostream>
using namespace std;
string global_str;
int main() {	
	cout << global_str << endl;
}

在这里插入图片描述
global_int 初始值为0,定义于任何函数体之外的变量被初始化为0

#include <iostream>
using namespace std;
string global_str;
int global_int;
int main() 
{
	cout << global_str << endl;
	cout << global_int << endl;
}

在这里插入图片描述
local_int
有小灯泡提示:未初始化本地变量
在这里插入图片描述
local_str 和 global_str结果一致,什么都没有生成。系统未报错。string类规定,如果没有指定初始值则生成一个空串。

而在函数体内的内置类型变量local_int变量不被初始化。如果试图拷贝或以其他形式访问此类值将报错。而string 不会,因为string不被初始化的话,生成的是空串,而int类型生成的是不确定的值。

提示:使用未初始化的变量将带来无法预计的后果。建议初始化每一个内置类型的变量。

定义于任何函数体之外的变量被初始化为0,一种例外情况是,定义在函数体内部的内置类型变量将不被初始化,如果试图拷贝或以其他形式访问此类值将引发错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值