2026-09-21 04:00 UTC
Replies (7)
-
@ASoftGlow@programming.dev 2026-09-21 04:41
Can confirm
-
@treadful@lemmy.zip 2026-09-21 04:50
What does assigning … do in C? Is that just default type value or something?
-
@FiskFisk33@startrek.website 2026-09-21 04:27
question, why is a declaration not a statement?
-
@spankysalmon@fedinsfw.app 2026-09-21 06:57
int x = …; isn’t just a declaration. Both are totally fine in most modern languages.
-
@onlinepersona@programming.dev 2026-09-21 07:56
wonders of C
-
@savvywolf@pawb.social 2026-09-21 10:45
You actually shouldn’t do this! This doesn’t introduce a new scope, so accidentally using x outside of the case block is UB. Instead you should introduce a new scope like so: switch (foo) { case BAZ: { int x = ...; foobar(x); } }
-
@calcopiritus@lemmy.world 2026-09-22 15:04
Can confirm. I have to do this all the time. Some coworkers just delete it, and I have to explain the situation every time when they see in the git blame that I put that semicolon there. As someone pointed out in another comment, in switch statements you should just start a new scope with {}. But in actual labels it’s just better to put a load-bearing semicolon. You don’t need to put it in another line though, I just put them like this: int main() { int *a = malloc(sizeof(*a)); if (init_a(a) <= 0) { goto err; } do_something(a); err:; int ret = 0; if (a == NULL) { ret = -1; } free(a); return ret; }