This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
gcc doesn't warn that (unsigned > 0) is always true
- From: David Calinski <neodave at gmx dot net>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 20 Oct 2003 18:09:55 +0200
- Subject: gcc doesn't warn that (unsigned > 0) is always true
- References: <1066664752.31445.ezmlm@gcc.gnu.org>
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