A problem of C language
Sprintf is followed by the string "123" in A, and the first four bytes are 0x3 1, 0x32, 0x33 and 0x00, because A is not initialized, and these four bytes are followed by uncertain values. You use the mechanism that %s outputs A and C to identify 0x3 1, 0x32, and the value 0 after 0x33 is a string terminator, so the character output is 123(%s outputs A as a string). When you use %d, you actually output a pointer in a plastic way, which is equivalent to printf ("%d \ n ",&; Answer.