设为首页 加入收藏

TOP

2.1.5 陷阱:未初始化的变量
2013-10-07 14:55:45 来源: 作者: 【 】 浏览:63
Tags:2.1.5 陷阱 初始 变量

2.1.5  陷阱:未初始化的变量

除非程序为变量赋值,否则变量不包含有意义的值。例如,如果变量minimum_number既没有放在一个赋值语句的左侧而被赋值,也没有通过其他手段来赋值(比如用cin语句赋一个由用户输入的值),以下语句就是错误的:

  1. desired_number = minimum_number + 10; 

这是由于minimum_number不包含有意义的值,所以等号右侧的整个表达式也不会产生有意义的值。如果变量(比如minimum_number)未被赋值,就说它未初始化。事实上,这比minimum_number不包含任何值还要糟糕。未初始化的变量(比如minimum_number)将包含一些"垃圾值"。未初始化的变量的值由留在其内存位置中的0,1序列来决定(可能是由用过该内存位置的上一个程序留下的)。因此,如果程序运行两次,未初始化的变量每次都可能获得不同的值。只要程序为完全相同的输入数据产生了两个不同的输出,而且程序本身未进行任何修改,就应该怀疑其中含有未初始化的变量。

为了避免出现未初始化的变量,一个办法是在声明变量的同时初始化。这可以通过添加一个等号和一个值来完成,如下所示:

  1. int minimum_number = 3

它除了将minimum_number声明为int类型的变量,还将minimum_number的值设为3。像这样在同一行声明并初始化时,可以使用涉及运算(比如加法或乘法运算)的一个更复杂的表达式。然而,最常见的还是使用简单的常量来初始化。可在一个声明内列出多个变量,同时初始化其中的部分或全部变量,或者一个都不初始化。例如,以下语句声明了三个变量,但只初始化其中两个:
  1. double rate = 0.07, time, balance = 0.0; 

C++(www.cppentry.com)允许采用另一种方式在声明变量的同时初始化它。以下语句等价于刚才的声明:
  1. double rate(0.07), time, balance(0.0); 

具体是在声明的同时初始化,还是以后再初始化,要取决于实际情况。你选择的方式应该使程序更容易阅读。

在声明中初始化变量

可在声明变量的同时初始化它(向它赋值)。

语法

  1. Type _Name  Variable _Name_1 = Expression _for_Value_1,  
  2.                  Variable _Name_2 = Expression _for_Value_2, . . .;  

示例
  1. int count = 0limit = 10fudge_factor = 2;  
  2. double distance = 999.99;  

在声明变量的同时对它进行初始化的另一种方式:
  1. Type_Name Variable_Name_1(Expression_for_Value_1),  
  2.            Variable_Name_2(Expression_for_Value_2), . . .;  

示例
  1. int count(0), limit(10), fudge_factor(2);  
  2. double distance(999.99);  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.1.6 编程提示:使用有意义的名称 下一篇2.2.1 使用cout进行输出

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: