FreeBSD Port: qmail-1.03_3

Chris Pressey cpressey at catseye.mine.nu
Tue Jan 25 21:55:54 PST 2005


On Tue, 25 Jan 2005 17:36:49 -0800
Michael Sierchio <kudzu at tenebras.com> wrote:

> [...]
> -     while ((k > i) && (cmds.s[k - 1] == ' ') || (cmds.s[k - 1] == '\t'))
> +     while ((k > i) && ((cmds.s[k - 1] == ' ') || (cmds.s[k - 1] == '\t')))
> 
> [...]  There is no semantic difference between the two, [...]

Oh?  That's news to me.  GCC must be broken, then.  Observe:

int main()
{
    int i, j, k;
    for (i = 0; i <= 1; i++) {
	for (j = 0; j <= 1; j++) {
	    for (k = 0; k <= 1; k++) {
		printf("i == %d, j == %d, k == %d    "
		       "i && j || k == %d    "
		       "i && (j || k) == %d\n",
		       i, j, k, (i && j || k), (i && (j || k))
		);
	    }
        }
    }
}

-------[ output ]------
i == 0, j == 0, k == 0    i && j || k == 0    i && (j || k) == 0
i == 0, j == 0, k == 1    i && j || k == 1    i && (j || k) == 0
i == 0, j == 1, k == 0    i && j || k == 0    i && (j || k) == 0
i == 0, j == 1, k == 1    i && j || k == 1    i && (j || k) == 0
i == 1, j == 0, k == 0    i && j || k == 0    i && (j || k) == 0
i == 1, j == 0, k == 1    i && j || k == 1    i && (j || k) == 1
i == 1, j == 1, k == 0    i && j || k == 1    i && (j || k) == 1
i == 1, j == 1, k == 1    i && j || k == 1    i && (j || k) == 1

-Chris


More information about the freebsd-ports mailing list