Bedingung falsch, obwohl wahr?



  • Abend,

    ich bin gerade ziemlich ideenlos bei folgendem Problem:

    if(index == mNumbers.size() - 1) {
    
    lightDir = (1.0f - factor) * sunDir  + factor * mMoonLightDir;	
    mLightAngle = -1;	
    }
    else {
       mLightAngle = sunAngle;
       lightDir = sunDir;	
    }
    

    index ist vom Typ size_t und hat den Wert 4. mNumbers ist ein vector und hat die size 5 (beides im Debugger angeschaut). Aber er geht dennoch nicht in den if Zweig! Er springt jedes Mal in den else Zweig.
    Wie kann das sein? 😕


  • Mod

    Nun, wem würdest du mehr vertrauen, penibel auf genaue Werte zu achten? Dir selbst oder einem Computer? Erstell doch mal ein vollständiges, minimales Beispiel, welches den Fehler gerade so noch zeigt, indem du alles unnötige rauskürzt. Vermutlich wirst du bei dessen Erstellung auch schon deinen Fehler oder zumindest einen verdächtigen Codeabschnitt finden.



  • Irgendwas ist hier total faul!

    int sizeMin2 = mLightAngleMaterials.size() - 1;
    bool b = lightMatIndex == sizeMin2;
    

    Alle 3 Werte sind im Watchfenster von VS 2010. lightMatIndex und sizeMin2 sind 4 und dennoch ist b false! WTF!

    Ist mein VS 2010 irgendwie zerschossen? 😕



  • Ich hatte auch schon, dass die Werte falsch angezeigt wurden in VS.
    Gib die Werte mal vorher aus. Dann hast du bestimmt die korrekten Werte.


Anmelden zum Antworten