Seltsames Verhalten



  • Hallo,

    Ich habe hier eine Funktion, die zählen soll wieviel Bits am Anfang (hochwertigstes Bit)eines chars auf high sind. Ich habe mir ziemlich die Zähne ausgebissen, bis es funktionierte. Allerdings kann ich mir nicht erklären, wieso es jetzt funktioniert. Hat jemand eine Ahnung, weshalb nur die eine Variante funktioniert? Ist ja eignetlich genau das geiche.

    inline int LeadingHighBits(char c)
    {
      int i = 0;
      int mask = 128;
    
      for(i = 0; i < 8; ++i)
      {
        // geht!
        //int test = c & mask >> i;
        //if(test == 0) return i;
    
        // geht nicht!
        //if(c & mask >> i == 0) return i;
      }
    
      return i;
    }
    
    int main(int argc, char **argv)
    {
      using namespace std;
    
      // 3 = korrekt, 8 = falsch
      cout << LeadingHighBits(128 + 64 + 32) << endl;
    
      return 0;
    }
    


  • Naja musst die operatoren Bindungsstärke beachten bzw. welcher operator welche Priorität hat.



  • Oje, da bin ich von etwas falschem ausgegangen. 🙄
    Thx.


Anmelden zum Antworten