Ошибки, баги, вопросы - страница 3475

Vladimir Simakov #:
Да не кто не думал, как лучше. Так получилось просто)

Еще раз повторюсь: как обычная функция означает лишь то (и только то), что оба (левый и правый) вычисляются в любом случае в отличие от этого:

bool f( int i ) { Print( i ); return i; }
void OnStart()
{
    if ( f(0) && f(1) );
}

Результат: 0

т.е. правый не вычисляется вообще

A100 #:

Результат: 0

т.е. правый не вычисляется вообще

&& в данном случае никакого отношения не имеет к operator&&. Они только пишутся одинаково.

operator&& - это метод, имеющий удобный синтаксис применения в некоторых ситуациях.
fxsaber #:

&& в данном случае никакого отношения не имеет к operator&&. Они только пишутся одинаково.

operator&& - это метод, имеющий удобный синтаксис применения в некоторых ситуациях.

Прямого отношения не имеет, а косвенное имеет. Разберитесь в этом результате и все станет понятно

A100 #:

Прямого отношения не имеет, а косвенное имеет

Только синтаксис.

A100 #:

Разберитесь в этом результате и все станет понятно

Компилятор в данном случае имеет баг, потому что у него неодинаковое поведение.

fxsaber #:

&& в данном случае никакого отношения не имеет к operator&&. Они только пишутся одинаково.

operator&& - это метод, имеющий удобный синтаксис применения в некоторых ситуациях.

Этот метод обязан работать одинаково с остальными методами.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2024.01.31 14:36

struct A { int i; void f( int ) { Print(__FUNCSIG__); } };

A g() { Print(__FUNCSIG__); A a; return(a); }

int Rand() { Print(__FUNCSIG__); return(0); }

void OnStart()
{
  g().f(Rand());
}


Результат.

int Rand()
A g()
void A::f(int)


Т.е. сначала вычисляется входной параметр, а затем - все остальное.

Если нет одинакового поведения - баг. А какое правило - дело компилятора.
fxsaber #:

Только синтаксис.

Не только синтаксис, но и приоритеты сохраняются. Если не разбираетесь в элементарном - лучше промолчать

A100 #:

Не только синтаксис, но и приоритеты сохраняются. Если не разбираетесь в элементарном - лучше промолчать

Взаимно.

fxsaber #:

Взаимно.

Даже GPT чат знает:

Важно помнить, что перегрузка расширяет возможности языка, а не изменяет язык

Нельзя менять приоритет и ассоциативность (слева направо или справа налево) операторов.

A100 #:

Даже GPT чат знает:

Нельзя менять приоритет и ассоциативность (слева направо или справа налево) операторов.

Вы выбрали авторитет.