Dziwny zapis operator trójargumentowy - jak to rozumieć?

0
c=c<0?0:c>255?255:c;

Jak to rozumieć? Co i kiedy będzie przypiane do c? Pierwszy raz widzę takie złożenie? Da się to inaczej rozpisać?

0

Jeżeli c < 0 to wtedy c = 0, jeżeli c >= 0 to wtedy jest sprawdzane czy c > 255 i jeżeli jest większe od 255 to c = 255, a jeżeli nie to c = c
Na if'ach to będzie tak:

if(c < 0)
{
    c = 0;
}
else
{
    if(c > 255)
        c = 255;
    else
        c = c;
}
0

c=c<0?0:c>255?255:c; można zapisać jako:
c=(c<0)?0:((c>255)?255:c);
co oznacza:

if (c<0)
{
  c = 0;
}
else
{
  if (c>255)
    c = 255;
  else
    c = c;
}
0

dziękuję:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1