The errors were wrong return type of main, which wouldn't affect the output, and wrong arguments to printf, which results in undefined behavior.
PS: If your system is anything like this GCC/linux I tested on, printf() expects to see integer arguments in certain CPU registers: ESI for the first %d, EDX for the second %d. You're passing structs, which are stored on stack instead, and the registers contain whatever intermediate values they happen to have at this point of execution.