读书人

c++数据类型有关问题

发布时间: 2012-02-09 18:22:27 作者: rapoo

c++数据类型问题


这个程序为何编译通过,而得出来的值却不对呢?数据类型哪里出现问题呢?我用long 也不行。请指教。
#include <iostream>
using namespace std;
int add_val(int);
void main()
{
int max_values;
cout < < "please enter a number ... ";
cin> > max_values;
max_values=add_val(max_values);
cout < <max_values;

}
int add_val(int j)
{
int i,m;
for (i=1;i <=j;i++)
{
m=m+i;
}
return m;
}


而下面这个程序却没有任何问题,
#include <iostream>
using namespace std;
void main()
{
int i,j=1;
int count=0;
cout < < "please enter a number... ";
cin> > i;
for (j=1;j <=i;j++)
{
count=count+j;
}
cout < <count;

}

[解决办法]
m=0
[解决办法]
int add_val(int j)
{
int i,m;
for (i=1;i <=j;i++)
{
m=m+i;
}
return m;
}
晕,楼上说得对,你m没有初始化。。。
[解决办法]
m有初值
[解决办法]
一点原则,变量使用前先定义,运算前先赋值。
[解决办法]
int add_val(int j)
{
int i,m;
m=0; //加上这一句
for (i=1;i <=j;i++)
{
m=m+i;
}
return m;
}

只有加上m=0;你的第一次m=m+i才有确定的值,是m=m+1,否则m是一个随机的数,那么你m=m+1也是随机的,导致全盘皆输
[解决办法]
“能否讲解下为何这初始值这么重要呢?”你这次的错误已经刻骨铭心地说明了为什么。
[解决办法]
m木有赋初值,指不定是什么数了。。。
[解决办法]
m=0;//初始化

读书人网 >C++

热点推荐