This issue needs to be explained in two cases: 1. When the Data Type of variable I is the default type provided by the c ++ language, their efficiency is the same. Int a, I = 0; a = ++ I; assembly code: int a, I = 0; 01221A4E mov dword ptr [I], 0 a = ++ I; 01221A55 mov eax, dword ptr [I] 01221A58 add eax, 1 01221A5B mov dword ptr [I], eax 01221A5E mov ecx, dword ptr [I] 01221A61 mov dword ptr [a], ecx int a, I = 0; a = I ++; the Assembly Code is as follows: int a, I = 0; 009E1A4E mov dword ptr [I], 0 a = I ++; 009E1A55 mov eax, dword ptr [I] 009E1A58 mov dword ptr [a], eax 009E1A5B mov ecx, dword ptr [I] 009E1A5E add ecx, 1 009E1 A61 mov dword ptr [I], ecx can be seen from the assembly code that their execution lines are the same! 2. We customize the data type, and the efficiency of ++ I is higher than that of I ++. We will illustrate this through Operator overloading. Operator: operator ++ () {++ value; // internal member variable return * this;} Operator: operator ++ (int) {Operator temp; temp. value = value; value ++; return temp;} Have you seen it? And must have a temporary object. So his efficiency naturally drops!