On Saturday 31 July 2010 16:22:46 Pluto wrote: > But these aren't compatible for the same function. > Defining false as <1 would fix this.
Historically, false has always been 0 and true non-zero - probably because it's then easy to use the assembly instruction to check whether something is 0 (which I believe is cheaper than checking for a specific value). In any case, changing that would likely break both people's expectations and their code. And regardless of that, it _isn't_ an error code to have a function return whether it succeeded or not. If you want to check error codes, then check for specific values or actually use the returned value rather than just throughing it in a condition by itself. _Every_ type converts to bool when put in a condition statement. It's entirely consistent that way. And having 0 be false and 1 true for numeric types is entirely consistent with how things have historically worked and pretty much everyone will expect them to work. Changing that would cause far more problems than it would ever solve. If you want error codes, you can just check the return value against 0 like has historically been done and you're fine, but error codes are generally a poor choice anyway. - Jonathan M Davis