Re: [PATCH] Use ^=1 to toggle between 0 and 1
From: René Scharfe <hidden>
Date: 2023-12-12 22:30:54
Am 12.12.23 um 21:09 schrieb Jeff King:
On Tue, Dec 12, 2023 at 05:17:47PM +0000, AtariDreams via GitGitGadget wrote:quoted
diff --git a/diff.c b/diff.c index 2c602df10a3..91842b54753 100644 --- a/diff.c +++ b/diff.c@@ -1191,7 +1191,7 @@ static void mark_color_as_moved(struct diff_options *o, &pmb_nr); if (contiguous && pmb_nr && moved_symbol == l->s) - flipped_block = (flipped_block + 1) % 2; + flipped_block ^= 1; else flipped_block = 0;This one I do not see any problem with changing, though I think it is a matter of opinion on which is more readable (I actually tend to think of "x = 0 - x" as idiomatic for flipping).
Did you mean "x = 1 - x"?
x 0 - x 1 - x
-- ----- -----
-1 +1 +2
0 0 +1
+1 -1 0
I don't particular like this; it repeats x and seems error-prone. ;-)
I agree with your assessment of the other three cases in the patch.
Can we salvage something from this bikeshedding exercise? I wonder if
it's time to use the C99 type _Bool in our code. It would allow
documenting that only two possible values exist in cases like the one
above. That would be even more useful for function returns, I assume.
René