8 ms·
20+ year C/C++ programmer here. I always use ++x unless the postfix version (x++) provides more succinct code. The postfix operator can incur a temporary vari
by letney 12y ago
20+ year C/C++ programmer here. I always use ++x unless the postfix version (x++) provides more succinct code.
The postfix operator can incur a temporary variable to be created by the compiler and thus make code slower.
Reference: http://www.idinews.com/peeves/prefixIncr.html http://www.idinews.com/peeves/prefixIncr.html
Also, item #6 from "More Effective C++": http://bin-login.name/ftp/pub/docs/programming_languages/cpp/cffective_cpp/MEC/MI6_FR.HTM http://bin-login.name/ftp/pub/docs/programming_languages/cpp...
- wtracy 12y agoDo note that modern compilers can detect when the return value of the ++ operator is unused, and skip the extra steps when unneeded. (I've verified the resulting assembler myself from GCC 3.X.) That said, I still use the prefix notation because I can't come up with a good reason not to.
- NAFV_P 12y ago> Do note that modern compilers can detect when the return value of the ++ operator is unused, and skip the extra steps when unneeded. Is there an equivalent instruction in assembly for postfix increment/decrement?
- wtracy 12y agoNeither one really has a direct "equivalent" in assembly. Prefix is going to look something like: inc eax # increment the value mov eax,ecx # copy the return value to its destination Postfix is going to look something like: mov eax,ebx # copy original value inc eax # increment value mov ebx,ecx # copy original value to final destination The actual code you'd get would vary a lot between compilers, architectures, and even just different contexts within the same compiler-architecture combination.
- NAFV_P 12y agoThank you, dammit I really should learn assembly.
- deleted 12y ago[deleted]
- berkut 12y agoOn the flipside, using pre-increment introduces a dependency, which means the processor can't do Out-of-order execution on instructions using that value...