powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / спор возник на java ...
19 сообщений из 19, страница 1 из 1
спор возник на java ...
    #34905659
SATURN2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет ли значение на С++ порядок

if (val==null)

if (null==val)

Если да, то какие последствия...
...
Рейтинг: 0 / 0
спор возник на java ...
    #34905681
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нас бог миловал у нас null нету.
А вообще оператор == - это функция с сигнатурой
bool operator(const LeftType& left, const RightType& right);
Можно всяко наворотить
...
Рейтинг: 0 / 0
спор возник на java ...
    #34905705
SATURN2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как на null проверять?
...
Рейтинг: 0 / 0
спор возник на java ...
    #34905742
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так правильно
Код: plaintext
1.
2.
3.
4.
A* a = new A();
....
if (a) // неявное проебразование 


Можно так
Код: plaintext
1.
2.
  if (a == NULL) // #define NULL 0 -  гдето в хидерах
                     //компилятор не разрешает переопределять operator == для встроенных типов
Но вот если самому писать смартпойнтеры вот тут можно наворотить
...
Рейтинг: 0 / 0
спор возник на java ...
    #34905941
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет, если одно присваивание забудешь.
А так нет.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34906440
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SATURN2 пишет:
> Имеет ли значение на С++ порядок
>
> if (val==null)
>
> if (null==val)

Нет, не имеет. Существуют
клинические случаи с переопределённым оператором ==, когда все же разница есть,
но это очень частное исключение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
спор возник на java ...
    #34906486
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SATURN2Имеет ли значение на С++ порядок

if (val==null)

if (null==val)

Если да, то какие последствия...

Только если val - объект:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class A {
    public:
        bool operator==(void *) {
            return true;
        };
};


int main() {

    A a;

    if (a==NULL) {};
    if (NULL==a) {};//error: no match for 'operator==' in '0 == a'

    if (&a==NULL) {};
    if (NULL==&a) {};

    return  0 ;
};


В С++ если оба типа простые, то переопределять оператор == нельзя. Тогда - не имеет. Если же один из опрерандов сложный тип, то - можно. Тогда будет разница.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34906526
Igor Barchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет если var class с переопределенным operator ==
(убил код - пример смотри выше)

Но все равно запись типа
Код: plaintext
 if(NULL == var)
предпочтительнее стилистически из за возможной ошибки
Код: plaintext
 if(var = NULL)
Забыли второе равно, сравнение превратилось в присвоение и потом в сравнение. Компилер крякнет конечно но только варнингом.
И потом сто лет искать с чего бы переменная вдруг пропала. А хуже если эксепшенов не будет, а просто тупая учетка памяти. Найти ее потом может быть очень сложно.
Ошибку типа
Код: plaintext
 if(NULL = var)

не пропустит компилер.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34908725
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Igor Barchenko wrote:
>
> Но все равно запись типа
>
> if(NULL == var)
>
> предпочтительнее стилистически из за возможной ошибки

Я бы так не сказал. На мой взгляд это дело вкуса. Более того - считаю,
что в самой технике больше вреда, чем пользы. Читать такие тексты тяжело
(это тоже можно считать определенной разницей в записи), всех проблем
она не решает, ошибки такого рода очень редки, да и исправляются они уже
в первом сеансе отладки, если не раньше, просматривая текст после
написания. Я одно время пытался ее использовать, а потом понял, что раз
уж вспомнил, что нужно наоборот написать, то проще убедиться в
корректном написании знака операции. А самая лучшая техника для защиты
от подобных ошибок это набор вслепую - отлично действует. ;-)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
спор возник на java ...
    #34908910
Фотография TPAKTOPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и наворочили вариантов.

Простый ответ - если одного и того же типа левая и правая страна - не имеет. Если РАЗЛИЧНОГО типа, тогда ПРАВАЯ сторона "ковертится" в тип, котоый СЛЕВА. Про предопределенный оператор уже вспомянули.

А по вопросу , что можно "упустить" ошибку типа if ( val = null ) - для етого есть WARNINGS у компилятора. Не ленитесь, настройте.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34909671
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teras пишет:

> Я бы так не сказал. На мой взгляд это дело вкуса. Более того - считаю,
> что в самой технике больше вреда, чем пользы. Читать такие тексты тяжело
> (это тоже можно считать определенной разницей в записи), всех проблем
> она не решает, ошибки такого рода очень редки, да и исправляются они уже
> в первом сеансе отладки, если не раньше, просматривая текст после
> написания. Я одно время пытался ее использовать, а потом понял, что раз
> уж вспомнил, что нужно наоборот написать, то проще убедиться в
> корректном написании знака операции. А самая лучшая техника для защиты
> от подобных ошибок это набор вслепую - отлично действует. ;-)

+1.
Это ж как надо не знать язык, чтобы боятся спутать сравнение с присваиванием !

На самом деле я написал гневное письмо про ид...тов которые это выдумали,
и деб....ов, которые это используют, но, подумав, не послал, посчитав что
будет слишком грубо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
спор возник на java ...
    #34909680
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TPAKTOPA пишет:
Если РАЗЛИЧНОГО типа, тогда ПРАВАЯ сторона "ковертится" в тип,
> котоый СЛЕВА. Про предопределенный оператор уже вспомянули.

Боюсь что это твои девичьи мечты. Надо стандарт смотреть, да лень.
Но очевидно, что если ты будешь сравнивать double и int, то независимо
ни от чего будут ставниваться double.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
спор возник на java ...
    #34909863
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет все преобразовано в double, равно как и при сложении и тп
И вообще лучше всего указатели проверять
if(a) - и короче и не оставляет места для разыгравшегося воображения
...
Рейтинг: 0 / 0
спор возник на java ...
    #34909954
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TPAKTOPA wrote:
>
> Простый ответ - если одного и того же типа левая и правая страна - не
> имеет. Если РАЗЛИЧНОГО типа, тогда ПРАВАЯ сторона "ковертится" в тип,
> котоый СЛЕВА. Про предопределенный оператор уже вспомянули.

В бинарных операциях оба операнда приводятся к ОБЪЕМЛЮЩЕМУ типу, а в
арифметических это еще и становится типом результата. Например, int OP
unsigned int становится unsigned int OP unsigned int.

Приведение к левому типу и в самом деле существует в некоторых языках.
Но это точно не C/C++.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
спор возник на java ...
    #34910097
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Barchenkoпредпочтительнее стилистически из за возможной ошибки
Код: plaintext
 if(var = NULL)
это фигня, проходит через месяц, а стилистически эта запись просто убитая.

blindedИ вообще лучше всего указатели проверять
if(a) - и короче и не оставляет места для разыгравшегося воображениянапример, в шарпе такое не прокатит, возможно, в жабе тоже, не уверен.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34910102
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoа стилистически эта запись просто убитаяя имел в виду NULL==val
...
Рейтинг: 0 / 0
спор возник на java ...
    #34910236
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
blinded
И вообще лучше всего указатели проверять
if(a) - и короче и не оставляет места для разыгравшегося воображениянапример, в шарпе такое не прокатит, возможно, в жабе тоже, не уверен.
Мы вроде про С++ говорим
...
Рейтинг: 0 / 0
спор возник на java ...
    #34910256
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну судя по названию топика, здесь не только с++ замешан.
...
Рейтинг: 0 / 0
спор возник на java ...
    #34910271
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сарае тоже написано ...
Однако спросили про с++
просто эти ребята по-другому не умеют
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / спор возник на java ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]