Comment on Me after I got fired

<- View Parent
yggdar@lemmy.world ⁨4⁩ ⁨months⁩ ago

That exact version will end up making “true” false any time it appears on a line number that is divisible by 10.

During the compilation, “true” would be replaced by that statement and within the statement, “LINE” would be replaced by the line number of the current line. So at runtime, you end up witb the line number modulo 10 (%10). In C, something is true if its value is not 0. So for e.g., lines 4, 17, 116, 39, it ends up being true. For line numbers that can be divided by 10, the result is zero, and thus false.

In reality the compiler would optimise that modulo operation away and pre-calculate the result during compilation.

The original version constantly behaves differently at runtime, this version would always give the same result… Unless you change any line and recompile.

One downside compared to the original version is that the value of “true” can be 10 different things (anything between 0 and 9), so you would get a lot more weird behaviour since “1 == true” would not always be true.

A slightly more consistent version would be

((__LINE__ % 10) > 0)

source
Sort:hotnewtop