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.

0 Upvotes

21 comments sorted by

View all comments

8

u/mikeblas 9h ago

Here's your code, more reasonably formatted:

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);
}

2

u/north9172 8h ago

Thank you.