nixp.ru v3.0

28 мая 2017,
воскресенье,
00:28:14 MSK

DevOps с компанией «Флант»
dot|exe написал 8 января 2008 года в 06:22 (402 просмотра) Ведет себя неопределенно; открыл 2 темы в форуме, оставил 3 комментария на сайте.

вот кусочек кода

//(1)

if (dig==0)

{

if (lcdval!=0)

LCD->display(lcdval*mul);

}

//(2)

if (dig==16)

{

if (lcdval!=0)

LCD->display(lcdval*(mul*mul));

}

Собственно, при (dig=0, lcdval=0) всё нормально, то есть условия не выполняются, но вот стоит переменной dig присвоить значение 16 (при lcdval==0), второе условие выполняется!

P.S. пишу в KDevelope C/C++ for KDE.

lcdval тип double

Uncle Theodore

Где-то в другом месте у тебя ошибка. Вот я пробую, все номально

#include 
using namespace std;
class lcd{
 public:
  void display(double whatever){
    cout << "Whatever is " << whatever << endl;
  }
};
int main(){
  double lcdval, mul=1;
  int dig;
  lcd *LCD = new lcd;
  cout << "Input dig=";
  cin >> dig;
  cout << "Input lcdval=";
  cin >> lcdval;
//(1)
 if (dig==0)
 {
   if (lcdval!=0)
     LCD->display(lcdval*mul);
   else
     cout << "Condition 1 is false\n";
 }
 //(2)
 if (dig==16)
 {
   if (lcdval!=0)
     LCD->display(lcdval*(mul*mul));
   else
     cout << "condition 2 is false\n";
 }
 return 0;
};



ted@toshiba64 ~$ ./lcd
Input dig=0
Input lcdval=0
Condition 1 is false
ted@toshiba64 ~$ ./lcd
Input dig=16
Input lcdval=0
condition 2 is false
ted@toshiba64 ~$
metal
dot|exe
lcdval тип double

double нельзя сравнивать с помощью ==. Вот ссылочка в тему http://www.thescripts.com/forum/thread129927.html

dot|exe

Спасибо…пока писал ответ, понял где косяк)