помогите обмануть законы математики и решить уравнение
Х % 10 = 10
FreshMan писал(а): я понял что надо налаживать маску
но после наложения маски, когда я комментирую строки 55 и 56 , а ввожу в действие 57, 58 все перестает работать
где я ошибаюсь
Код: Выделить всё
PORTB = PORTB & ~mask_PB | (CodeDigit[Screen[var]] & mask_PB);
Код: Выделить всё
time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;Код: Выделить всё
time_format_12_AM_PM == (0 ? point[0] = 0 : point[0] = 1);Код: Выделить всё
time_format_12_AM_PM == point[0] = 1;Код: Выделить всё
(time_format_12_AM_PM == 0) ? point[0] = 0 : point[0] = 1;Код: Выделить всё
point[0] = (time_format_12_AM_PM == 0) ? 0 : 1;Код: Выделить всё
point[0] = time_format_12_AM_PM ? 1 : 0;Код: Выделить всё
point[0] = time_format_12_AM_PM;У "? :" приоритет ниже чем у "==". По этому, Ваши рассуждения неверны.WiseLord писал(а):Это неправильно, потому что воспринимается какКод: Выделить всё
time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;Код: Выделить всё
time_format_12_AM_PM == (0 ? point[0] = 0 : point[0] = 1);
Код: Выделить всё
time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;Код: Выделить всё
(time_format_12_AM_PM == 0) ? point[0] = 0 : point[0] = 1;Код: Выделить всё
point[0] = time_format_12_AM_PM != 0;Код: Выделить всё
point[0] = time_format_12_AM_PM == 0 ? 0 : 1;Вы правы, полистал документацию - так и есть. Тогда, по идее, должно было бы скомпилироваться.Аlex писал(а):У "? :" приоритет ниже чем у "==". По этому, Ваши рассуждения неверны.
будет восприниматься какКод: Выделить всё
time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;Код: Выделить всё
(time_format_12_AM_PM == 0) ? point[0] = 0 : point[0] = 1;
У операторов ?: и = одинаковый приоритет и правая ассоциативность. Результат операции присваивания - собственно присваиваемое значение. Вероятно случай компилятора-параноика, который хочет результат всей тернарной операции обязательно куда-то присунуть. Для проверки гипотезы попробуйте так:FreshMan писал(а):в чем состоит моя ошибка при написании тернарного оператора ?
Код: Выделить всё
point[0] = time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;за неимением опыта такое приходится мудрить что и стыдно потом становится за напрасно написанные строкиАlex писал(а):Автор, вероятнее всего, сам что-то намудрил
Код: Выделить всё
point[0] = time_format_12_AM_PM; // выкл/вкл точки 0-го разряда для обозначения АМ/РМ
Нет ничего постыдного в наработке опыта и оттачивании своего стиля кодирования. Наоборот - получайте удовольствие от возможности выразить свой замысел гораздо более компактно чем ещё вчера. А завтра лаконичнее чем сегодня.FreshMan писал(а):за неимением опыта такое приходится мудрить что и стыдно потом становится за напрасно написанные строки![]()
Код: Выделить всё
point[0] = time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;Код: Выделить всё
volatile uint8_t x, y, z, res;
// x == 0 ? y = 0 : z = 1;
// res = x == 0 ? y = 0 : z = 1;
res = x == 0 ? y : z;
Код: Выделить всё
x == 0 ? (y = 0) : (z = 1);
нет, ошибка тажеSiarzhuk писал(а): Повторю просьбу - проверьте, пожалуйста, компилируется ли такой вариант:Спасибо.Код: Выделить всё
point[0] = time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;
интересно... что же не так? чем выражение a=b отличается от (a=b)?FreshMan писал(а):ошибка таже
А как вам понравится вот это: Renesas-овский e2 студень с KPIT-овским компилятором на базе какой-то гоцацы при сборке С-файла:ARV писал(а):что же не так?
Код: Выделить всё
../src/params.c:623:65: error: lvalue required as left operand of assignment
point[0] = time_format_12_AM_PM == 0 ? point[0] = 0 : point[0] = 1;
^мне никогда не нравится то, что я не понимаю...Siarzhuk писал(а):А как вам понравится вот это
ВСЕЦЕЛО СОЛИДАРЕН !ARV писал(а):мне никогда не нравится то, что я не понимаю...