because clog and cout are all buffered, so if you don't use endl to flush it, if you use them to print out debugging information, then there will be mistaken inferences. so I am thinking now that cerr is not buffered at all, why don't I use cerr to print all debugging information to avoid that risk?
We can enable or disable automatic flushing of the stream after every output for any output stream.
The only difference with std::cerr / std::wcerr is that unitbuf is on by default.