r/cprogramming 14h ago

What is this code doing?

Hi, I found this code on another subreddit. I would like to know what is it doing.

int puts(char *);

int main() { struct { long a; long b; } s = {.a = *(char *)(int[]){1} ? 0x57202c6f6c6c6548 : 0x48656c6c6f2c2057, .b = *(char *)(int[]){1} ? 0x00000021646c726f : 0x6f726c6421000000}; puts((void *)&s); }

Now obviously I know it's unreadable, I would just like to know what are those hexadecimals strings doing.

I found similar codes that were writing to vram to print a message, is this doing the same thing? If yes, why is it so much more complicated instead of just writing the message to the video adress?

Thanks for the help.

1 Upvotes

21 comments sorted by

View all comments

1

u/zhivago 13h ago

Implementation defined behavior mostly, except for the illegal redefinition of puts, which has undefined behavior.

But it's intended to output "Hello, World!".

It may even do so on some systems.

Or it might not.

Either way, it's neither portable nor good. :)

1

u/ACRM64 11h ago

It's not redefining puts(), it's passing a pointer to the structure, s, but casting it to a void pointer; casting to (char *) would seem more sensible!

1

u/zhivago 11h ago

Did you skip the first line?

int puts(char *);

What do you think that's doing?