1
if( i!= 0? i%2 ==0: false) 
  //...... 

В данном примере получается 2 проверки на верность идёт? Если значение i не равно 0,то даст true, и выполняется выражение

i%2 == 0

Но если оно не делится без остатка, то в этом выражении false,? И перейдет к значению , т.е выражению под номер 3.

false

Или если в выраж 2 false то к 3 выражению мы не переходим?

  • 1
    «И перейдет к значению , т.е выражению под номер 3» — нет. Просто вернёт false. – Alexey Ten Nov 03 '23 at 10:49
  • 1
    А разве тернарный оператор используют в if? Я видел(и использую сам) его только при присваивании или возвращении результата из метода. – Lapish Nov 03 '23 at 10:53
  • 3
    Если i == 0, то выполнится : false. Вообще смысл всего if(...) такой -- если i не ноль и i четное, то выполнить операторы под if, или иными словами (правильный выбор зависит от физического смысла задачи), если i равно нули или i нечетно, то ничего деллать не надо. – avp Nov 03 '23 at 10:54
  • @Lapish ну Шилдт видимо практикует такое, у него написано следующее(Присваивать переменной результат выполнения оператора ? совсем не обязатель­ но. Например, значение, которое дает оператор ?, можно использовать в качестве аргу­ мента при вызове метода. А если все выражения в операторе ? относятся к типу bool, то такой оператор может заменить собой условное выражение в цикле или операторе if) – gachi_muchenik Nov 03 '23 at 11:04

1 Answers1

4

Вообще это в точности соответствует такому оператору if:

if (i != 0 && i%2 == 0)
...

Зачем было так запутывать логику - непонятно. Обычно true и false нет необходимости писать при вычислении булевой логики. Условие либо выполняется, либо не выполняется.

CrazyElf
  • 71,194
  • Как много вопросов к Шилдту, и так мало ответов – gachi_muchenik Nov 03 '23 at 11:35
  • Вероятно кто-то рефакторил, что-то убрал, а структуру оставил как было – Darth Nov 03 '23 at 14:19
  • @gachi_muchenik: Шилдт ужасен, выбросьте или подарите своему врагу. – VladD Nov 03 '23 at 17:12
  • @VladD Сначала начал читать Библию с# Фленова, какой то ужас, главу не дочитал, а Шилдта решил потому что по нему раньше учил C++. Может вы что то посоветуете, потому что у всех мнения расходятся, говорят что после Шилдта приходится переучиватся, но как база идеально. Может что для начала посоветуете? – gachi_muchenik Nov 03 '23 at 21:09
  • 1
    @gachi_muchenik: В описании метки [c#] я когда-то поместил ссылку на список литературы: https://ru.stackoverflow.com/q/416584/10105 – VladD Nov 03 '23 at 22:32