gcc doesn't warn that (unsigned > 0) is always true
David Calinski
neodave@gmx.net
Mon Oct 20 17:13:00 GMT 2003
Hi all,
This may be a bit stupid, but as I run into problem once because of
this...
I think gcc should warn about it when "-Wall" is set.
Consider the following snip of code:
/* gcc (3.3.2 with -Wall and -pedantic)
* doesn't warn that (unsigned > 0) is always true.
*/
#include <stdio.h>
void a_loop (unsigned int in) {
int dumb = 0;
do {
++dumb; /* anything here */
/* Well, a lot of code can be here,
* almost all variables int _signed_,
* so a programmer may overlook that 'in' is_unsigned_
*/
} while (--in > 0);
/* variable 'in' will be NEVER less than zero (it's unsigned),
* this is in fact an *endless* loop.
* It should be obvious that it wasn't programmer intention.
* Shouldn't gcc with -Wall warn about it?
* Shouldn't gcc warn about all such obviously mistaken checks
* (unsigned > 0) that are always true?
*/
}
int main (void) {
a_loop (0);
return 0; /* never achieved */
}
--
David Calinski
More information about the Gcc
mailing list