Why does the C language source file not create the object file. obj after compilation, but directly generate the executable file. exe?

  c++, question

Why does the C language source file not create the object file. obj after compilation, but directly generate the executable file. exe?
I saw in the textbook that the source file of C language will generate an object file with an extension of. obj after compilation, but I only generate an executable file of. exe after compilation. Why is this?

gcc -c main.c
Use the -c parameter to tell the compiler driver to perform compilation only

gcc main.c
The compiler’s driver performs compilation, generates an. o file in a temporary directory, and then performs linking to generate an executable file.

The same is true for using MS compiler under windows, but I don’t know what the specific parameters are.