求解一个异常#3的有关问题
求解一个错误#3的问题
#include <iostream>
using namespace std;
int perint(int i);
int main(){
int i;
cout << "输入一个数:" << endl;
cin >> i;
if (perint(i)){
cout << "此数为质数。"<< endl;
}
else
{
cout << "此数不为质数。" << endl;
}
return 0;
}
int perint(int i){
double k;
int j, flag;
k = sqrt(i);
for (j = 2; j <= k; j++){
if (i%j == 0){
flag = 0;
break;
}
}
return flag;
}
/*代码如上,当运行时,没有错误或警告,可是当我输入17或者是一些别的数时(以17为例吧),会出现debug error;
然后有 Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized;
这是什么原因呢?*/
我看到一篇帖子http://blog.****.net/stephen1315/article/details/7457294,上面貌似有解释,但是我有点模糊不清,还请帮个忙。就是能就我这个代码,解释我的这个问题。谢谢
------解决思路----------------------
局部变量,如果没有明确的初始化,它的初值是不确定的。
比如flag,如果i是个质数,那么一直到return flag都不会给他赋值。这时候他的值可能是任何的整数,导致不确定结果。
------解决思路----------------------
楼主用的什么编译器?
我dev c++没问题啊,楼主的程序需要在最上面加上# include <cmath>吧
------解决思路----------------------
04年的书,什么书啊?得看是哪方面内容
------解决思路----------------------
The variable 'comstat' is being used without being initialized;
虽然这个错误中提示的变量可能不是你自己的.
但你的flag变量 , 如果未进入for循环, 返回的就是未初始化的值. 行为未知
#include <iostream>
using namespace std;
int perint(int i);
int main(){
int i;
cout << "输入一个数:" << endl;
cin >> i;
if (perint(i)){
cout << "此数为质数。"<< endl;
}
else
{
cout << "此数不为质数。" << endl;
}
return 0;
}
int perint(int i){
double k;
int j, flag;
k = sqrt(i);
for (j = 2; j <= k; j++){
if (i%j == 0){
flag = 0;
break;
}
}
return flag;
}
/*代码如上,当运行时,没有错误或警告,可是当我输入17或者是一些别的数时(以17为例吧),会出现debug error;
然后有 Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized;
这是什么原因呢?*/
我看到一篇帖子http://blog.****.net/stephen1315/article/details/7457294,上面貌似有解释,但是我有点模糊不清,还请帮个忙。就是能就我这个代码,解释我的这个问题。谢谢
------解决思路----------------------
局部变量,如果没有明确的初始化,它的初值是不确定的。
比如flag,如果i是个质数,那么一直到return flag都不会给他赋值。这时候他的值可能是任何的整数,导致不确定结果。
------解决思路----------------------
楼主用的什么编译器?
我dev c++没问题啊,楼主的程序需要在最上面加上# include <cmath>吧
------解决思路----------------------
04年的书,什么书啊?得看是哪方面内容
------解决思路----------------------
The variable 'comstat' is being used without being initialized;
虽然这个错误中提示的变量可能不是你自己的.
但你的flag变量 , 如果未进入for循环, 返回的就是未初始化的值. 行为未知