Re[9]: Отправил в личку. ;)
От: Vamp Россия  
Дата: 05.08.10 19:38
Оценка: :))
E>А зачем тебе юани, кстати? США скоро планирует сдаваться КНР?
Ответа нет. Оффтопик и флейм прекращен в зародыше.
Да здравствует мыло душистое и веревка пушистая.
Re[6]: оператор - 2 восклицательных знака
От: rg45 СССР  
Дата: 05.08.10 20:06
Оценка:
Здравствуйте, Vamp, Вы писали:

E>>Типа на символ? прикольный подход к кодированию...

V>Гораздо больше, чем на один символ.
V>x != 0 — 6 символов.
V>!!х — 3 символа. В 2 раза быстрее!

А что если "x" в коде выглядит как a — b? Тогда еще пару скобочек посчитать придется
--
Справедливость выше закона. А человечность выше справедливости.
Re[5]: оператор - 2 восклицательных знака
От: dilmah США  
Дата: 05.08.10 20:18
Оценка: 1 (1) :)
E>Кроме того, в приведённом контексте название переменной наводит на мысли, что это таки число. Что такое "двойное отрицание пяти", например?

ну а в чем проблема. В Си исходно булевого типа не было, их роль играли целые.
Двойное отрицание не меняет логического значения и только нормализует в 1/0.
Пятерка нормализуется в единицу.
Re[5]: оператор - 2 восклицательных знака
От: Warturtle  
Дата: 05.08.10 22:07
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Mr.Delphist, Вы писали:


MD>>Если p — обычный указатель, то оба if пролетят мимо, а если p — "умный", то в первый if мы таки заскочим. Получается, что написание !! превращает код в легко мигрирующий (или безопасную заготовку для шаблона).


E>Не понятно, чем же != 0 плох в этом контексте.

Ничем не плох. Имею такую версию (например). '!!' располагается целиком слева и оттого (дичайше) напоминает операторную запись — в математическом смысле (Fx или F(x)). То есть это (вощемто) оператор "естественного вложения" какого-то объемлющего множества — "кольца" — в {0, 1}.
Re[6]: оператор - 2 восклицательных знака
От: Erop Россия  
Дата: 05.08.10 22:12
Оценка:
Здравствуйте, dilmah, Вы писали:


E>>Кроме того, в приведённом контексте название переменной наводит на мысли, что это таки число. Что такое "двойное отрицание пяти", например?


D>ну а в чем проблема. В Си исходно булевого типа не было, их роль играли целые.

Проблема в том, что нечитабельно. Если у тебя value -- это число, а не логический тип, то не понятно как-то, что такое его отрицание
Кроме того, приличные люди в С писали что-то типа
typedef int BOOL;


D>Двойное отрицание не меняет логического значения и только нормализует в 1/0.

D>Пятерка нормализуется в единицу.
Спасибо, С я знаю. Но я не понимаю, зачем писать Сщные ребусы вместо понятного кода
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: оператор - 2 восклицательных знака
От: Erop Россия  
Дата: 05.08.10 22:14
Оценка:
Здравствуйте, Warturtle, Вы писали:

W>Имею такую версию (например). '!!' располагается целиком слева и оттого (дичайше) напоминает операторную запись — в математическом смысле (Fx или F(x)). То есть это (вощемто) оператор "естественного вложения" какого-то объемлющего множества — "кольца" — в {0, 1}.


Что-то мне так кажется, что таким соображением никто ни разу не пользовался, при написании !!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: оператор - 2 восклицательных знака
От: Вумудщзук Беларусь  
Дата: 06.08.10 06:48
Оценка: 1 (1) :)
>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0
почему страдать? если есть BOOL a, b; // где BOOL — какой-нть очередной typedef int
то в написании if (!!a == !!b) меньше страданий, чем в if ((a && b) || (!a && !b))
тчк
Re[4]: оператор - 2 восклицательных знака
От: Erop Россия  
Дата: 06.08.10 09:22
Оценка:
Здравствуйте, Вумудщзук, Вы писали:

>>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0

В>почему страдать? если есть BOOL a, b; // где BOOL — какой-нть очередной typedef int
В>то в написании if (!!a == !!b) меньше страданий, чем в if ((a && b) || (!a && !b))

Боже ж мой! Ты контекст исходного сообщения видел?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: оператор - 2 восклицательных знака
От: Eternal  
Дата: 06.08.10 10:08
Оценка:
Здравствуйте, Erop, Вы писали:

E>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0


С int действительно разницы никакой. Код смахивает на С-шный, но если бы там был шаблонный аргумент:
static inline void input_report_key(struct input_dev *dev, unsigned int code, T value)

то есть мнение, что !! наиболее безопасный способ конвертации в bool:
http://www.artima.com/cppsource/safebool.html
Лучше, конечно, такого избегать.
safebool
Re[5]: оператор - 2 восклицательных знака
От: Вумудщзук Беларусь  
Дата: 06.08.10 10:57
Оценка:
>Боже ж мой! Ты контекст исходного сообщения видел?
а что с ним не так ?
тчк
Re[3]: оператор - 2 восклицательных знака
От: baboon12345  
Дата: 06.08.10 14:35
Оценка:
Здравствуйте, Erop, Вы писали:

E>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0

Для ненулевых значение удобно писать проверки

if ( i )
{
}


минус данной конструкции — warning(losing data бла-бла int to bool)
Re[3]: оператор - 2 восклицательных знака
От: andpar  
Дата: 06.08.10 15:08
Оценка:
E>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0

Это невсегда возможно. Одно время был подход определять оператор! для преобразования в bool (т.к. сам operator bool имеет некоторые недостатки). Поэтому и писали так:

class A
{
public:
    bool operator!() const
    {
        return !good_;
    }
private:
    bool good_;  
};


Поэтому не сравнишь объект класса с нулем.
Re[4]: оператор - 2 восклицательных знака
От: andpar  
Дата: 06.08.10 15:15
Оценка:
MD>Как я понимаю, это пошло-поехало от умных указателей. Там оператор "!" переопределяется с целью изучить внутреннее содержимое, а не обертку.

MD>
MD>p = NULL;
MD>if (p)
MD>{
MD>  // do something
MD>}
MD>if (!!p)
MD>{
MD>  // do something
MD>}
MD>


MD>Если p — обычный указатель, то оба if пролетят мимо, а если p — "умный", то в первый if мы таки заскочим. Получается, что написание !! превращает код в легко мигрирующий (или безопасную заготовку для шаблона).


Покажи, хоть один такой пример умного указателя (кроме каких-нибудь своих доморощенных). В нормальных реализациях сделано так, что проверка умного указателя и обычного дают один и тот же результат (ну или, на худой конец, как в auto_ptr, вообще она не реализована). Т.е. не ошибешься
Re[3]: оператор - 2 восклицательных знака
От: . Великобритания  
Дата: 08.08.10 14:53
Оценка: 1 (1)
On 05/08/10 21:50, Erop wrote:

> 1) Лучше, всё-таки сравнивать оператором ==

> 2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0
А ещё есть javascript, и, наверняка ещё какие-нибудь подобные языки, где тип может быть не только число, а много чего — (строка, пустой массив и т.п.), которые тоже имеют логическое значение false, и привести к логическому типу проще всего именно с помощью !!.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: оператор - 2 восклицательных знака
От: Pzz Россия https://github.com/alexpevzner
Дата: 08.08.10 19:45
Оценка: :))
Здравствуйте, Erop, Вы писали:

E>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0


Это разделяет читателей программы на 2 лагеря: равных автору в мудрости своей, и тех, кто ничего не понял
Re[4]: оператор - 2 восклицательных знака
От: Erop Россия  
Дата: 08.08.10 22:21
Оценка: 1 (1)
Здравствуйте, Pzz, Вы писали:

E>>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0

Pzz>Это разделяет читателей программы на 2 лагеря: равных автору в мудрости своей, и тех, кто ничего не понял

Есть ещё и третий лагерь -- те, кто понял всё, кроме того, зачем так извращаться
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.