Возможно ли присвоить значение переменной другой функцией только если проверка прошла

Понимаю что код не верный, но думаю смысл задачи понятен:

void setup() {
  // put your setup code here, to run once:

}

long check(long value)
  {
    if(100<a<1000000){return value;}
  }
long a=100000;
long b=0;
void loop() {
  // put your main code here, to run repeatedly:
  delay(1000);
  if(b=check(a)){}
}

Вообще - возможно. В вашем примере изменить нужно код немного.

бред полнейший, а не код
Вот такие условия нельзя использовать:

Во вторых, сама функция - если условие истинно, она возвращает значение. А если нет?
Оператор-то “=” все равно что-то должен присваивать в этой строчке:

Это не говоря о том, что в этом коде функция вообще ни к сему ни к городу.

@3d_killer . вы на форуме вроде года три уже - неужели до сих пор не научились азам языка С? Не стыдно?

Ой не в питоне ли такое выражение возможно? Могу ошибаться. Но в каком то языке есть.

Value передавать нужно передавать по ссылке:
‘‘‘
void check(int test, long& value) {
If (test > 100) { value = test * test; }
}
‘‘‘

Вобщем, хз, где апостроф в андроиде на клавиатуре.

А зачем? Для экономии памяти разве что…

На айпаде где цифры, второй строкой у &

Чтобы изнутри функции передать значение только при определённом условии, а при другом - не портить переменную.

Так что ей будет, если значение только передать?

Напрасно думаете. В названии топика бессмысленный набор слов.

Рискну предположить, что Вы хотели, чтобы функция возвращала значение только при выполнении некоторого условия. Если так, то нет - невозможно. Функция либо возвращает значение, либо нет. Это фундаментальная вещь в программировании.

Есть старый, но очень жизненный анекдот как раз в точности на эту тему: программист перед сном всегда ставил на тумбочку стакан с водой и пустой стакан. Первый - на случай, если ночью захочется пить, а второй - на случай, если пить не захочется.

Ничего не будет, просто не изменится.

А т.к. из функции всегда что-то вернуть нужно…
Хотя, действительно, можно и так:

if (a > b)
return value*2;
else
return value;

Компилятор, наверное, соптимизирует это перекладывание из кармана в карман.

я другим занимаюсь, иногда просто появляются личные задачи и задаю вопросы если не могу с чем-то разобраться, а как же тогда делать двойное условие?

“чтобы это не значило…” (с)

if(a>100 & a<100000)
Так?

нет

Я думаю в случае ТС подойдёт такая конструкция (если я правильно понял, что он имел ввиду):

long check(long value) {
    if (100 < value && value < 1000000) {
      return value;
    }
    return 0;
}

При этом если условие не выполнится, то b присвоится ноль (в текущем коде ничему не противоречит), но само условие в основной программе не выполнится (как текущий код и предполагает).

И куда ТС пропал, вроде так активно отвечал )))
Главное запись ему понятную оставил… эх…

да я не пропал, пробую, спасибо

И как? Помогло? (Я правки делал, используй то что сейчас, последнее)

1 лайк

да, помогло, благодарю