Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Warning: W8008 Condition is always false, Как избавиться??? 
V
    Опции темы
Bima
Дата 15.5.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



есть код:
Код

unsigned num; // номер тега в массиве
unsigned short device_no=HIWORD(num);
unsigned short number=LOWORD(num);

  if (number<0 || number>=dRows || device_no<1)
      return FALSE;
  
  //код подпрограммы

  return TRUE;

компилятор ругается на строчку if (number<0 || number>=dRows || device_no<1), что условие всегда ложное.

пытаюсь запрограмировать условие так: если number находится в диапазоне от 0 до dRows  и  device_no меньше единицы, то возвращаю false, иначе код программы и возвращаю true;


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Anikmar
Дата 15.5.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Bima @  15.5.2007,  12:04 Найти цитируемый пост)
если number находится в диапазоне от 0 до dRows  и  device_no меньше единицы,

Я в условии не увидел "И"

Добавлено @ 12:11
Был неправ - невнимательно посмотрел
Заключите каждое условие в скобки
Код

if ((number<0) || (number>=dRows) ||(device_no<1)) ...


Это сообщение отредактировал(а) Anikmar - 15.5.2007, 12:11
PM MAIL ICQ   Вверх
Klin
Дата 15.5.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Anikmar, вы не ошиблись в условии стоит "или".
  •  || - означает "или"
  •  && - означает "и"


Bima, всегда проверяйте себя, например можно так:

Код

 if (1==1 && 2==4) ShowMessage("Вариант №1");  // в условии "и"
 if (1==1 || 2==4) ShowMessage("Вариант №2"); // в условии "или"


Какой из них срабатывает, в том "или", а в другом "и".


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Bima
Дата 15.5.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Прошу прощения, я не правильно написал условие, нужно так:
если number находится в диапазоне от 0 до dRows  или  device_no меньше единицы, то возвращаю false, иначе код программы и возвращаю true;

то есть усли я выхожу за пределы допустимого, мне не нужно выполнять программу...

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


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
dumb
Дата 15.5.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



компилер ругается не на все условие целиком а на
Цитата(Bima @  15.5.2007,  12:04 Найти цитируемый пост)
number<0


ты слово unsigned в типах осмысленно пишешь?

Добавлено через 2 минуты и 25 секунд
Цитата(Bima @  15.5.2007,  12:57 Найти цитируемый пост)
если number находится в диапазоне от 0 до dRows  или  device_no меньше единицы, то возвращаю false

Код

if (number < dRows  || device_no < 1) return false;

PM MAIL   Вверх
Vyacheslav
Дата 15.5.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Bima @  15.5.2007,  12:57 Найти цитируемый пост)
если number находится в диапазоне от 0 до dRows  или  device_no меньше единицы, , то возвращаю false

Код

 if ( ( number>=0 && number<=dRows ) || device_no<1)
      return FALSE;



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Bima
Дата 15.5.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



все равно такой же варнинг пишет


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Rickert
Дата 15.5.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Bima
Код

...
if (((number > 0) && (number < dRows) ) || (device_no < 1))
      return FALSE;
...

Если не заработает, убей свой borland об стену и поставь нормальный vs
 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
dumb
Дата 15.5.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Bima, читать умеешь? - читай мой предыдущий пост.

при указанных типах твое условие сводится к:
if (number < dRows  || !device_no) return false;
PM MAIL   Вверх
Bima
Дата 15.5.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



dumb,  прости, твой пост не заметил...
понял ошибку... number  не может быть отрицательным
всем спасибо.



--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.