"What happens is that variable i is converted to unsigned integer." No: 'long i' is converted to 'unsigned long'.
"Usually size_t corresponds with long of given architecture." No: For example, on Win64 size_t is 64 bits whereas long is 32 bits.
If you're going to write about Advanced Programming, you should be careful to actually be correct.