All smaller microcontrollers are programmed in C, not full C++, because the C++ runtime library is (relatively) large, and smaller microcontrollers don't have enough resources for that.
C code generates just a small amount of assembler instructions, so it is quite close to how the microcontroller functions.
Larger microcontrollers can be programmed in any language if the compiler exists, because larger microcontrollers have the resources (ram, CPU speed, etc).