March 23, 2026

++ or bust? The internet has thoughts

Side-Effectful Expressions in C (2023)

C’s ++ meltdown: coders split between “ban it” and “meh”

TLDR: A writer blasted C’s “do stuff while computing” tricks—especially ++/-- and assignment-in-expressions—as readability traps, and the community instantly split. Minimalists cheer Go-style simplicity, while C veterans shrug and say “learn the rules,” turning a coding nitpick into a culture war over safety and clarity.

An opinion piece called out C’s sneakiest habits—like doing an action while calculating something else—spotlighting assignments and the notorious ++/-- operators as the chief culprits. The author argues this makes code harder to read and reason about, pointing to a silent number‑shrinking example that compiles without a peep. Cue the comments: the internet lit up.

Minimalists rallied behind “less magic, more clarity.” User andrewla went in hard, saying Go (go.dev) got it right by allowing ++/-- only as stand‑alone commands, not inside bigger expressions. Their vibe: compact code isn’t a goal, readable code is. Some even want the equals sign to stop behaving like a sneaky expression in disguise. On the other side, long‑time C fans shrugged. User commandlinefan admitted a bit of “Stockholm syndrome” but still wasn’t convinced the examples justify tossing C’s quirks, much less replacing the language.

Between quips about “C without ++ just being C—” and sighs about teaching beginners, the split is clear: clean‑code crusaders want to declutter, while C lifers say the weirdness is part of the charm—and there are tools and warnings if you care. The stakes feel big because C powers a lot of crucial software. Change the habits, change the culture. Or don’t, and brace for more spicy threads.

Key Points

  • The author groups C language issues into two buckets: safety and user/implementer sanity.
  • An example shows an implicit narrowing cast from uint64_t to uint16_t compiles without warnings under clang -Wall.
  • The article focuses on two problematic C features: assignment expressions and pre/post-increment/decrement operators.
  • It argues computations suit expression trees, while side effects are better expressed as sequences of statements.
  • The author contends that embedding side effects in expressions obscures order and harms clarity and predictability.

Hottest takes

"Go made the right call here and allows these only as statements, not as expressions." — andrewla
"I will basically never use these in code I write... the only value add is compactness" — andrewla
"Maybe I'm just Stockholm syndrome-d into the C programming language" — commandlinefan
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.