Do you even write programs? The GNU C++ compiler will give you a warning if you compare a signed variable to an unsigned variable. This should tell you that it is a bad idea if you don't believe me. These 2 variables should both be signed or both be unsigned. If you make the score an unsigned value, then everything you compare it to should also be unsigned. Everything you add to it, multiply it by should also be unsigned. This is annoying with heavily used variables as you cannot use comparison to -1 to indicate an error has occurred as the value will never actually be negative...because, it's unsigned. 2's complement is nice in that it allows us to use signed variables with unsigned variables, but that doesn't mean we should. A variable is not a constant. Obviously, I wouldn't compare signed -1 to unsigned 5 if I knew that was the value of the variables. If you wrote complex software, you would realize that variables are not always in the correct range. That's one cause of software bugs. There are ways around it, but they involve speed trade offs. Every time I wanted to use a signed value to modify or compare to the score, I would have to first check to make sure it's not negative.
I understand 2's complement, but it really doesn't have anything to do with the reason signed and unsigned don't mix well in programs. Terms mean different things to different people depending on context. I explained my definition of sign bit in my previous post to clear your confusion about what I was saying. Apparently, the current definition in wikipedia agrees with me, so I am not the only one. Maybe you could edit the page and enlighten everyone?