代码一:
#include <iostream>
using std::cin;
using std::cout;
double jiechen(int in);
int _tmain(int argc, _TCHAR* argv[])
{
int input;
cout<<"Number?";
cin>>input;
cout<<jiechen(input);
return 0;
}
double jiechen(int in)
{
if ((in==1) && (in==0))
{
return 1;
}
else
{
return (in*jiechen(in-1));
}
}
代码二:
#include <iostream>
using std::cin;
using std::cout;
double jiechen(int in);
int _tmain(int argc, _TCHAR* argv[])
{
int input;
cout<<"Number?";
cin>>input;
cout<<jiechen(input);
return 0;
}
double jiechen(int in)
{
if (in<=1)
{
return 1;
}
else
{
return (in*jiechen(in-1));
}
}
按理说这两段代码应该是等价的,而且这两段代码都能通过编译和链接,但是在运行时无论输入什么数字代码二都可以得到正确的答案,代码一却会出错其错误信息是"unknow software exception(0xc00000fd)"
我的编程环境是WIN2K SP4+VS.NET
请高手解释一下这个情况
((in==1) && (in==0))
改为
((in==1) || (in==0))
代码一里面的if ((in==1) && (in==0))改称if ((in==1) || (in==0))就OK啦,否则if条件永远不满足的