Date: Tue, 7 Jul 2026 21:11:56 +0200
From: Roland Illig <roland.illig%gmx.de@localhost>
Am 07.07.2026 16:08:00 schrieb Taylor R Campbell :
This is the best operator in C! --> is the `goes down to' operator.
How does it come that this "best operator" is neither mentioned in
operator(7) nor share/misc/style, and that indent(1) formats it as
two separate operators? All this looks like you're making things up.
I am, of course, being facetious about --> being an operator in and of
itself: it is a post-decrement operator followed by greater-than.
But, even though it is a little cute, after many years of writing
logic that iterates in reverse over half-open intervals, I came to the
entirely serious conclusion that
for (i = N; i --> 0;) { ... i ... }
is much more readable and obvious and safe than any of the
alternatives
for (i = N; i > 0; i--} { ... i - 1 ... }
for (i = N - 1; i >= 0; i--} { ... i ... }
for (i = N; i-- > 0;} { ... i ... }
for (i = N; --i >= 0;} { ... i ... }
as soon as you have spent a moment _once_ to figure out what --> is;
the others all require at least several minutes of thought every time
I look at them to make sure they're doing the right thing, if not
several hours of banging my head against them debugging.
If you decide that this style is superior, you should adjust the
aforementioned places (there may be more) and apply this style
change throughout the whole source tree, for consistency.
I would be happy to do that! But I realize that, on first reaction,
many people find it a little too cute. And we don't have every point
of style variation deterministically spelled out in KNF or enforced in
the tree. For example, we have both `if (!foo)' and `if (! foo)'
throughout the tree already. And we have three different automated
indentation mechanisms (indent(1), NetBSD.el, and clang-format) that
generally agree on what KNF says but disagree on some things it
doesn't say.