It's wrong because the C standard says it's wrong. There is absolutely no reason to break portability for an issue like this IMO.