When passing function parameters, the types of char and short are automatically upgraded to integers. When the compiler converts n and m into integers, it finds that the sign bit of m is 1, so it will expand the sign and get the integer -32768. Therefore, when using %d format controller to interpret these two parameters, you will get 32767 and -32768 respectively.