Kurze Dekrementierfrage



  • void whiteSquare::decreaseCount(){
    	if(exSquares && exSquaresCount && !wSError)
    		exSquares[--exSquaresCount] = NULL; // Genau hier
    }
    

    in den Indexklammern bin ich mir nicht sicher, ob jetzt der Zeiger in
    exSquares[exSquaresCount] zuerst auf NULL gesetzt wird, und erst danach exSquaresCount um 1 reduziert wird, oder ob zuerst exSquaresCount um 1 reduziert wird, und demzufolge der Zeiger in exSquares[(exSquaresCount-1)] auf NULL gesetzt wird. Letzteres hätte ich nämlich beabsichtigt.
    Jetzt kann es sein, dass das nur bei meinem Compiler so funktioniert, und womöglich ein anderer Compiler es anders macht.
    Was ist denn in so einem Fall die Standard-Regelung, wenn es denn eine gibt?



  • Sollte doch eigentlich letzteres sein... Da du ja den Prä-Dekriment Operator benutzt (--i im Gegensatz zu i--)
    Ergo würde ich behaupten: exSquares[(exSquaresCount-1)] wird auf NULL gesetzt.



  • sollte nicht nur, es ist so. wenn ein compiler es anders regelt, dann ist er kein c++ compiler 😉


Anmelden zum Antworten