Porównanie pomiędzy signed i unsigned int.

0

Moje IDE (Eclipse) wywala mi warning jak w temacie (chodzi o porównanie (string.size() > width). A przecież mam pewność, że signed na pewno nie jest ujemne:

 if (width>0){
    if (string.size() > width){
    .....
    }
}

Myślałem o wyliczeniu wartości bezwzględnej z width, ale to bez sensu, skoro sprawdzam, czy width > 0.
Wobec tego powinienem coś z tym zrobić, czy olać to?

1

Kompilator zazwyczaj aż tak dokładnie nie analizuje kontekstu - po prostu widzi porównanie signed <=> unsigned i rzuca wyjątek.
Dlaczego w ogóle width jest liczbą ze znakiem?

0

Tak ogólnie to aż się prosi o Short-circuit evaluation:

 if (width > 0 && string.size() > width)
{

}

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