练习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,一种例外情况是,定义在函数体内部的内置类型变量将不被初始化,如果试图拷贝或以其他形式访问此类值将引发错误。