注册 登录
编程论坛 C++教室

为什么要初始化??

monkeyzhen 发布于 2007-01-27 20:38, 905 次点击

我刚开始学C++,写了一个小程序
提示出来这个

#include<iostream>
using namespace std;
int main()
{
double lang,ma;
ma=lang*220;
cout<<"Enter the lang:";
cin>>lang;
cout<<"It equals to "<<ma<<" ma"<<endl;
return 0;
}


F:\study\second.cpp(6) : warning C4700: local variable 'lang' used without having been initialized
是没有赋初值吧?可是为什么要赋初值呢?不明白,麻烦解答一下

[此贴子已经被作者于2007-1-27 20:40:26编辑过]

4 回复
#2
monkeyzhen2007-01-27 20:43

由于是warning可以运行,运行后无论输入什么,出来的都是
[QUOTE]-2.03631e+|064[/QUOTE]
这又是为什么呢?

#3
蓝鹰2007-01-27 21:38
以下是引用monkeyzhen在2007-1-27 20:38:00的发言:

我刚开始学C++,写了一个小程序
提示出来这个

#include<iostream>
using namespace std;
int main()
{
double lang,ma;
ma=lang*220;
cout<<"Enter the lang:";
cin>>lang;
cout<<"It equals to "<<ma<<" ma"<<endl;
return 0;
}


F:\study\second.cpp(6) : warning C4700: local variable 'lang' used without having been initialized
是没有赋初值吧?可是为什么要赋初值呢?不明白,麻烦解答一下



当然没有赋初值,ma=lang*220应该放在cin>>lang;之后,不然lang的值是不确定的,&lang将是一个不确定的内存空间,只有在用cin>>lang;后,lang才被分配了相应的内存空间并有相应的值,才能进行lang*220运算,否则将得到一个不可预料的值.

#4
monkeyzhen2007-01-27 21:45
嗯。这个问题也是刚从别的地方请教人 明白了过来。呵呵
还是多谢了
帮忙看看那个编程的问题
#5
虫虫飞ya飞2007-01-31 15:15
#include<iostream>
using namespace std;
int main()
{
double lang,ma;

cout<<"Enter the lang:";
cin>>lang;
ma=lang*220;
cout<<"It equals to "<<ma<<" ma"<<endl;
return 0;
}
ma=lang*220;换到cin>>lang;下面不然你的lang都没值拿什么跟220乘
1