C++ Quiz



  • Testen Sie Ihre Kenntnisse in C++. Finden Bugs in populären Open-Source-Projekte: http://q.viva64.com/



  • nett. Schaue ich mir auf jeden Fall mal genauer an



  • AndreyKarpov schrieb:

    Testen Sie Ihre Kenntnisse in C++. Finden Bugs in populären Open-Source-Projekte: http://q.viva64.com/

    Der ist Schrott. Schon in der ersten Frage steht Unsinn:

    BOOL AddTail(LPVOID p)
    { 
        ...
        if (queue.GetSize() >= this->_limit);
        {
            while (queue.GetSize() > this->_limit - 1)
            {
                ::WaitForSingleObject(handles[SemaphoreIndex], 1);
                queue.Delete(0);
            }
        }
        ...
    }
    

    Laut dem Test hätte ich auf das Semicolon hinter dem if klicken sollen, habe aber auf das this geklickt, weil es nicht ersichtlich ist, daß es sich hierbei um einen Memberfunktion handelt. So ein Test ist doch Unfug.

    mfg Martin



  • 10/15, "ready for real life c++". Puh, gerade so. Vielleicht sollte ich mir doch noch eine akademische Karriere offenhalten.

    mgaeckler schrieb:

    Laut dem Test hätte ich auf das Semicolon hinter dem if klicken sollen, habe aber auf das this geklickt, weil es nicht ersichtlich ist, daß es sich hierbei um einen Memberfunktion handelt. So ein Test ist doch Unfug.

    Du hast einfach nicht verstanden, dass du nach Bugs suchen solltest, nicht nach Syntaxfehlern.


  • Mod

    bool QConfFileSettingsPrivate::readIniLine(....)
    {
      int dataLen = data.length();
      ....
      if (i == lineStart + 1) {
        char ch;
        while (i < dataLen &&
               ((ch = data.at(i) != '\n') && ch != '\r'))
          ++i;
        lineStart = i;
      } else if (!inQuotes) {
      ....
    }
    

    Ich meckere das = an weil ch das Ergebnis des Vergleichs zugewiesen wird, der Test sagt es ist die Klammer.
    Sonst jede richtig.

    Laut dem Test hätte ich auf das Semicolon hinter dem if klicken sollen

    Ja, das hätte ich auch getan. 😕



  • mgaeckler schrieb:

    Der ist Schrott. Schon in der ersten Frage steht Unsinn:

    BOOL AddTail(LPVOID p)
    { 
        ...
        if (queue.GetSize() >= this->_limit);
        {
            while (queue.GetSize() > this->_limit - 1)
            {
                ::WaitForSingleObject(handles[SemaphoreIndex], 1);
                queue.Delete(0);
            }
        }
        ...
    }
    

    Ich habe auf das if geklickt, weil die Bedingung dort und die Schleifenbedingung im Grunde gleich sind und man sich die eine haette sparen koennen.



  • Da war nicht unwesentlich viel wiederlicher code dabei.
    Und wenn ich am copy und pasten bin, dann werfe ich mir IMMER vor, was falsch gemacht zu haben. Und loop unrolling mache ich nicht von Hand.



  • Arcoth schrieb:

    Ich meckere das = an weil ch das Ergebnis des Vergleichs zugewiesen wird, der Test sagt es ist die Klammer.

    Ja, aber gemeinst ist:

    i < dataLen && ((ch = data.at(i)) != '\n' && ch != '\r'))
    

    Deswegen die Klammer.


Log in to reply