【发布时间】:2012-10-29 19:01:36
【问题描述】:
这是一段sn-p代码,我不知道它有什么问题。
if 语句不正确地评估数字并转到“else”。
double m,k;
m = (y3-y1)/(x3-x1);
k = m*(-x1)+y1;
cout <<"\n\n"<< m <<" "<< k << "\n";
cout <<"\n\n"<< ((-a)/b) <<" "<< c/b << "\n";
if(m==((-a)/b) && k==c/b)
{
cout << "\nTaisne sakrīt ar kādu no trīsstūra malām!" << endl;
goto beigas;
}
else
cout << "\n\n WRONG \n\n";
用户输入值 x1,y1,x3,y3,a,b,c - 都是 double。
似乎只有“m”才能正常工作。奇怪的是,当我尝试以下操作时,if 语句在相同的值下为真:
if(m==((-a)/b) && k<c/b)
这里是一个截图来得到整个问题:
代码在用户输入所有值后开始。
谢谢,任何帮助将不胜感激!
【问题讨论】:
-
浮点运算不精确。
-
另外,请避免 goto 语句,GOTO 是邪恶的!
-
如果你使用goto statement会发生什么
-
@VictorHugo:不小心使用 goto 语句会导致代码难以理解和维护,因为与使用更规则结构的代码相比,控制流对人类来说不太明显,例如带有单一入口点和单一出口,或至少明确定义的共同点出口。这会增加软件开发和维护的成本并增加错误。
标签: c++ if-statement evaluation