Dla pętli bez drugiego warunku, tj. Sprawdzenia boolowskiego?

Muszę napisać funkcję, która oblicza piętro bazy logowej 16 niepodpisanego int. Istnieją ograniczenia co do tego, jakie operatory i jakie stałe możemy używać, i możemy używać tylko konkretniefor pętle.

Dla jasności nie możemy używać żadnych instrukcji warunkowych (jeśli, inaczej, przełącznik ...). Prototyp funkcji to:

int floor_log16(unsigned int x); 

Dozwoleni operatorzy:++ -- = & | ~ ^ << ! >>

Dozwolone stałe:1 2 3 4 8 16

Napisałem wersję programu w następujący sposób:

int floor_log16(unsigned int x) {
    int index=1;
    int count=(1!=1);

    count--;

    for(; index<=x; index<<=4) {
        count++;
    }

    return count;
}

który wydaje się działać zgodnie z oczekiwaniami. Jednak zdałem sobie sprawę, że w oparciu o późniejsze funkcje i opis potrzebnej funkcjonalności, którą musimy napisać, zauważyłem, że czasami pod „dozwolonymi operatorami”> i< zostały wymienione.

Wnioskuję, że to oznacza, że ​​od tego czasufloor_log16 Funkcja wymieniona powyżej nie została wyraźnie polecona> lub<, Mogę tylko założyć, że powyższe rozwiązanie nie zostanie zaakceptowane.

Pozostawia mnie to raczej zdezorientowane, ponieważ nie rozumiem, jak można mieć pętlę for bez sprawdzenia logicznego?

Czy cała idea pętli nie powtarza się, gdy warunek jest spełniony?

questionAnswers(3)

yourAnswerToTheQuestion