Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
1

Бессмысленное (?) сравнение

13.01.2013, 12:31. Показов 1541. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разбирая чужой код увидел такое
C++
1
2
3
// ???
if (!(a <= 0) && !(a >= 0))
  printf("oba-na!");
Возможно ли задать такое "a" чтобы печаталось oba-na? (перекрытых операторов нет). Или программист просто ошибся?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2013, 12:31
Ответы с готовыми решениями:

Чем заменить бессмысленное использование метода к объекту? И какую литературу рекомендуете по ООП на СИ
Надо рассчитать суммарный объем всех коробок. Создал метод для вывода этого объема, однако...

Сравнение текста из файла и сравнение с текстом в программе char - Dev C++
Доброго времени суток! Имеется код программы: ifstream test(&quot;primer.txt&quot;); char awm = &quot;kod&quot;;...

Сравнение DateTime - Почему сравнение запаздывает на 1 мин
public DateTime NextShort(DateTime cur, int ofset, int period) { var temp =...

Дополните пожалуйста эти методы! скалярное произведение векторов, умножение на скаляр, сравнение векторов, сравнение
public class VectorTricks { public static void main(String args) { Vector v1 = new...

25
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 12:36 2
Можно упростить это выражение:
C++
1
if (a > 0 && a < 0)
'a' в любом случае не может быть и больше, и меньше 0. -> нельзя задать такое 'a'
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
13.01.2013, 12:38 3
Цитата Сообщение от Igor3D Посмотреть сообщение
Возможно ли задать такое "a" чтобы печаталось oba-na?
Код эквивалентен
C
1
if (a > 0 && a < 0)  printf("oba-na!");
1
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
13.01.2013, 12:48  [ТС] 4
Цитата Сообщение от Байт Посмотреть сообщение
Код эквивалентен
C
1
if (a > 0 && a < 0)  printf("oba-na!");
Наверное >=. Все равно не эквивалентен (да-да, правило де Моргана работает не всегда)

А экспертов прошу сохранять спокойствие
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.01.2013, 12:52 5
Цитата Сообщение от Igor3D Посмотреть сообщение
Наверное >=. Все равно не эквивалентен (да-да, правило де Моргана работает не всегда)
Ну так разберите выражение и посмотрите, эквивалент или нет.
0
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 12:52 6
Но тут и так ясно, что эквиалентен. > и <= - обратные действия)
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
13.01.2013, 12:54 7
Цитата Сообщение от Igor3D Посмотреть сообщение
Наверное >=.
нет не наверное
отрицание a <= 0
Цитата Сообщение от Igor3D Посмотреть сообщение
!(a <= 0)
даст a > 0
смотрим a=-1
a <= 0 истина
!(a <= 0) ложь

a=0
a <= 0 истина
!(a <= 0) ложь

a=0
a >= 0 истина
a > 0 ложь
1
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 12:57 8
Думаем логически. Есть ли такое число, которое одновременно больше 0 и меньше 0? Конечно, нет Если бы было число, которое являлось бы и отрицательным, и положительным, тогда бы oba-na. 0 таким не является
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
13.01.2013, 12:58 9
Цитата Сообщение от Igor3D Посмотреть сообщение
да-да, правило де Моргана работает не всегда
серьезно
покажи исключение
1
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.01.2013, 13:04 10
Is !(a < b) logically the same as a >= b?
2
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
13.01.2013, 13:20  [ТС] 11
Цитата Сообщение от Jupiter Посмотреть сообщение
А было так интересно наблюдать как человек уверен что "этого точно не может быть!". Вы все испортили
0
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 13:22 12
А я все еще уверен, что этого не может быть. Дай пример чисел
0
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
13.01.2013, 13:30  [ТС] 13
Цитата Сообщение от sovaz1997 Посмотреть сообщение
А я все еще уверен, что этого не может быть. Дай пример чисел
А до тыкалок все плохо доходит
C++
1
2
3
double a = sqrt(-1.0);
if (!(a <= 0) && !(a >= 0))
  printf("oba-na!");
0
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 13:38 14
sqrt(отрицательное_число) - не число. Может только для таких ситуаций эта ф-ия создана
0
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
13.01.2013, 13:42 15
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Может только для таких ситуаций эта ф-ия создана
Мне кажется что таким способом можно делать разные проверки.

Добавлено через 36 секунд
Как в случае
C++
1
double a = sqrt(-1.0);
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
13.01.2013, 13:45 16
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Может только для таких ситуаций эта ф-ия создана
Для таких ситуаций можно сделать проще
C++
1
if (a != a) printf("a != a");
в данном случае сложно разгадать замысел программиста, возможно он вообще не понимал, что делал
0
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
13.01.2013, 13:46 17
Корень из отрицательного числа: читать
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.01.2013, 13:47 18
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <memory.h>
int main( void ) {
    float f=12;
    memset(&f,0xFF,sizeof(f));
    std::cout<<f<<std::endl;
    std::cout<<(f>=0?"true":"false")<<std::endl;
    std::cout<<(!(f<0)?"true":"false")<<std::endl;
}
Название: Безымянный.jpg
Просмотров: 32

Размер: 7.5 Кб
На msdn есть еще статейка маленькая: Not a Number (NAN) Items
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.01.2013, 13:57 19
Цитата Сообщение от Igor3D Посмотреть сообщение
Возможно ли задать такое "a" чтобы печаталось oba-na?
Если a=NaN, то будет напечатано!!!
1
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,744
13.01.2013, 14:19  [ТС] 20
Цитата Сообщение от Kastaneda Посмотреть сообщение
Для таких ситуаций можно сделать проще
C++
1
if (a != a) printf("a != a");
А Вы уверены что любой компилятор/оптимизация это не выкинет?
Цитата Сообщение от Kastaneda Посмотреть сообщение
в данном случае сложно разгадать замысел программиста, возможно он вообще не понимал, что делал
Это весьма авторитетный, известный программист, что заставило меня внимательнее отнестись к этому месту
0
13.01.2013, 14:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2013, 14:19
Помогаю со студенческими работами здесь

сравнение а (эй) и а
Скажите, пожалуйста, как можно сделать так, чтобы макрос при сравнении букв а (эй) и а не учитывал...

Сравнение
Надо найти самую дорогую конструкцию и решать рубль или копейк.

сравнение бд
допустим на сайт будет добавляться около 3-10 а то и более статей(будет зависеть от активности...

Сравнение i3 i5 i7
планирую покупать себе ноут. Делема с выбором процессора, где можно посмотреть сравнение этих...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru