Форум программистов, компьютерный форум CyberForum.ru

C++ Не правильно работает if - C++

Восстановить пароль Регистрация
 
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 12:15     C++ Не правильно работает if #1
Ребята, привет. Возник такой вопрос..В программе выполняю следующую вещь:
C++
1
2
3
4
5
6
7
8
9
10
                          f1=   Have_Point(p1);
                 f2=    Have_Point(p2);
                 f3=    Have_Point(p3);
                 f4 =   Have_Point(p4);
 
                if(f1 == true && f2 == true && f3 == true && f4 == true)//Т.е все точки не принадлежат области
                {
                    sX[sY[i].Min].Min = sX[sY[i].Min].Min +1;
                    sY[i].Min = sY[i].Min +1;
                }
Т.е Have_Point() функция возвращает истину или ложь, дальше проверяем условие..ну вроде всё очевидно, что тут происходит. Вопрос в том, что при выполнении все f точно true! но условие if ни в какую не выполняется, т.е не заходит в этот блок..как это можно исправить, и из-за чего проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
01.05.2013, 12:17     C++ Не правильно работает if #2
полный код.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
01.05.2013, 12:20     C++ Не правильно работает if #3
Выведите значения проверяемых переменных на экран перед блоком if.

Так точно работает:
C++
1
2
3
4
  bool f1 = true, f2 = true, f3 = true, f4 = true;
  if(f1 == true && f2 == true && f3 == true && f4 == true) {
    std::cout << true << std::endl;
  }
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
01.05.2013, 12:45     C++ Не правильно работает if #4
Цитата Сообщение от StaR0sTa Посмотреть сообщение
Have_Point()
с ошибкой, неправильно работает
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
01.05.2013, 12:47     C++ Не правильно работает if #5
Цитата Сообщение от StaR0sTa Посмотреть сообщение
все f точно true!
Доказывай. Останови выполнение на шаге if и выведи в дебаггере переменные.
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 12:58  [ТС]     C++ Не правильно работает if #6
Попробовал вывести на экран перед блоком..он в этот if тоже не заходит..т.е не выводит..

Добавлено через 1 минуту
Я итак всё в режиме отладки проверяю..каждый шаг, с заходом в функцию Have_Point()

Добавлено через 8 минут
Сейчас попробовал задать явно как посоветовал lemegeton..тогда он заходит в этот блок. Но как так? Если я вижу, что функция возвращает также все точки как true, но не заходит туда..мой мозг..
phantom96
MЫW
 Аватар для phantom96
124 / 109 / 1
Регистрация: 15.02.2013
Сообщений: 538
01.05.2013, 13:47     C++ Не правильно работает if #7
В функцию Have_Point вместо содержимого return true поставьте и проверяйте. Если сработает значит и копать вам в вашу функцию.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.05.2013, 14:47     C++ Не правильно работает if #8
StaR0sTa, могу предположить, что у Вас Have_Point возвращает не bool, а int. Например вот для проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main()
{   
    int f = 2;
    if( f == true )
    {
        cout << "true" << endl;
    }
    else
    {
        cout << "not true" << endl; 
    } 
}
Выведет "not true"
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 15:20  [ТС]     C++ Не правильно работает if #9
Всем спасибо за помощь=) Проблему вроде как нашёл..Всё дело в том, что Have_Point() когда принимала точку, если ни одно из условий в этой функции не выполнялось, то оно выходило из функции просто так ничего не возвращая, почему-то точке всё равно присваивалось true, но видать это не такое true которое было нужно условию=)
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
01.05.2013, 16:38     C++ Не правильно работает if #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Выведет "not true"
а разве в ифе все ненулевое не "true"?
StaR0sTa
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 12
01.05.2013, 18:28  [ТС]     C++ Не правильно работает if #11
Верно говоришь
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.05.2013, 19:04     C++ Не правильно работает if #12
Цитата Сообщение от zybrzybr Посмотреть сообщение
а разве в ифе все ненулевое не "true"?
если убрать == true, то if сработает конечно а так - ненулевой int не обязан проходить на равенство с true.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 21:55     C++ Не правильно работает if
Еще ссылки по теме:

Не правильно работает! C++
C++ Не правильно работает!
C++ Не правильно работает sin()

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
02.05.2013, 21:55     C++ Не правильно работает if
  #13

Не по теме:

Цитата Сообщение от zybrzybr Посмотреть сообщение
а разве в ифе все ненулевое не "true"?
именно так. Но в данном случае bool будет приведен к int, а не int к bool, поэтому получится
C++
1
if( f == 1 )

Yandex
Объявления
02.05.2013, 21:55     C++ Не правильно работает if
Ответ Создать тему
Опции темы

Текущее время: 08:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru