devxlogo

Understanding the Difference Between Postfix and Prefix Operators

Understanding the Difference Between Postfix and Prefix Operators

The built-in ++ and?operators can appear on both sides of their operand:

 int n=0;++n; // prefix ++n++; // postfix ++

You probably know that a prefix operator first changes its operand before taking its value. For example:

 int n=0, m=0;n = ++m; // first increment m, then assign its value to ncout 

In this example, n equals 1 after the assignment because the increment operation took place before m's value was taken and assigned to n. By contrast,

 int n=0, m=0;n = m++; // first assign m's value to n, then increment mcout 

In this example, n equals 0 after the assignment because the increment operation took place after m's original value was taken and assigned to n.

To understand the difference between postfix and prefix operators better, you can examine the disassembly code generated for these operations. Even if you're not familiar with assembly languages, you can immediately see the difference between the two?simply notice where the inc (increment) assembly directive appears:

 // disassembly of the expression: m=n++;mov ecx, [ebp-0x04] // store n's value in ecx registermov [ebp-0x08], ecx // assign value in ecx to minc dword ptr [ebp-0x04] // increment n;// disassembly of the expression: m=++n;inc dword ptr [ebp-0x04] // increment n;mov eax, [ebp-0x04] // store n's value in eax registermov [ebp-0x08], eax // assign value in eax to m
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist