niteshv959 Ответов: 2

Кодирование языка Си относительно условного оператора


главный( )
{int a=5,b=6,c=12,d=11,e;
e=(a!=b?(e<=(!d)?a:b):c;
Е ("Е=℅Д",Е);
}
здесь проблема заключается в том, что когда первое условие a!=b истинно, то каким будет значение e, которое будет сравниваться с e<=(!d).это только вопрос

Что я уже пробовал:

пожалуйста, любой орган, есть объяснение

Richard MacCutchan

Переменная e не был инициализирован, поэтому его нельзя сравнить с d и дают действительный результат.

2 Ответов

Рейтинг:
2

OriginalGriff

Чтобы добавить к тому, что говорит Патрис, если вы не понимаете выражение условного оператора, то разбейте его на if заявление:

a = b == c ? d : e
становится:
if (b == c)
   {
   a = d;
   }
else
   {
   a = e;
   }
Исправьте ошибки компиляции в вашем примере и выполните преобразование: должно быть довольно очевидно, что происходит тогда.

Имейте в виду, что "вложенность" условных операторов в вашем виде - это не очень хорошая идея-как вы уже видели, она затрудняет чтение кода, а это делает его менее надежным, поскольку он склонен к неправильной интерпретации, когда ваш код изменяется (и это будет, это будет).


jeron1

Мудрый совет, на мой взгляд.

Рейтинг:
0

Patrice T

Цитата:
здесь проблема заключается в том, что когда первое условие a!=b истинно, то каким будет значение e, которое будет сравниваться с e<=(!d).это только вопрос

Вы забыли сказать, что должен делать этот код
  e=(a!=b?(e<=(!d)?a:b):c;
//         ^ here: you are using 'e', but where did you give it a value ?
//  ^ here: you open a parenthesis, but where do you close it ?

Вы должны знать, что инициализации переменной не существует, поэтому, если вы не даете ей значения, это может быть что угодно.

Что это должно означать e<=(!d) ?
синтаксически это правильно, логически - бессмысленно.


OriginalGriff

:большой палец вверх: !