I'm not a C programmer but if they work the way I'm used to in Java an assert will cause errors that don't happen in the non-debug version. The reason for this is because that's exactly what an assert is supposed to do
The idea is for the assert to trigger if it finds something that shouldn't ever happen under any circumstances (percentages greater than 100, less than 0 etc). That way the programmer knows exactly where the problem is and can correct it. This is much easier than a normal crash where the problem with an object can show up all over the place.
Non debug builds won't have assertations turned on and therefore won't get exactly the same crash. However the problem which caused the assertation (in this case a percentage of more than 100%) can cause a different crash elsewhere in the code.
Okay C guys. Did I get close?
