Kann man das echt so schreiben?



  • Hi,

    ich hab ne frage:
    ich habe neulich im netz einen code gefunden, den ich nicht so zu 100% durchblicke:

    bool CKeyboard::isPressed (unsigned int key)
    {
    	return ((key < 256) ? (this->m_currKey[key] == true) : false);
    }
    

    ansich versteh ich den code ja, bis auf eines, wieso macht der nicht direkt this->m_currKey[key], sondern geht mit dem == operator drüber??



  • Vielleicht findet er es übersichtlicher, aber ob man es weg lässt oder nicht ist vom Verhalten her egal.



  • Weil das ne Flasche geschrieben hat:

    return key<256 && m_currKey[key];
    


  • @Shade:
    wow, das ist ja bestimmt doppel so schnell! thx

    kann man das hier auch noch optimieren?

    bool CKeyboard::isReleased (unsigned int key)
    {
    	if (key < 256)
    	{
    		if ((this->m_oldKey[key] == true) && (this->m_currKey[key] == false))
    		{
    			return (true);
    		}
    	}
    	return (false);
    }
    


  • return key<256 && m_oldKey[key] && !m_currKey[key];
    


  • *** schrieb:

    @Shade:
    wow, das ist ja bestimmt doppel so schnell! thx

    Wenn mein Code schneller ist, als der original Code - dann solltest du deinen Compiler wechseln. Denn sowas sollte er schon optimieren können.

    kann man das hier auch noch optimieren?

    bool CKeyboard::isReleased (unsigned int key)
    {
      if (key >= 256) return false;
      return m_oldKey[key] && !m_currKey[key];
    }
    

    BTW:
    die Geschwindigkeit müsste identisch sein - aber es geht hier um die Lesbarkeit. Und da ist kurzer Code meistens besser.

    BTW2:
    Wer
    if(foo==true) return true;
    else return false;
    schreibt, hat bool nicht verstanden.


Anmelden zum Antworten