Click here to Skip to main content
15,913,685 members

The Weird and The Wonderful

   

The Weird and The Wonderful forum is a place to post Coding Horrors, Worst Practices, and the occasional flash of brilliance.

We all come across code that simply boggles the mind. Lazy kludges, embarrassing mistakes, horrid workarounds and developers just not quite getting it. And then somedays we come across - or write - the truly sublime.

Post your Best, your worst, and your most interesting. But please - no programming questions . This forum is purely for amusement and discussions on code snippets. All actual programming questions will be removed.

 
GeneralRe: How to increment a variable Pin
CurtD19-Mar-09 12:59
CurtD19-Mar-09 12:59 
GeneralRe: How to increment a variable Pin
Luc Pattyn19-Mar-09 13:11
sitebuilderLuc Pattyn19-Mar-09 13:11 
GeneralRe: How to increment a variable Pin
supercat919-Mar-09 18:40
supercat919-Mar-09 18:40 
GeneralRe: How to increment a variable Pin
CurtD20-Mar-09 11:50
CurtD20-Mar-09 11:50 
GeneralRe: How to increment a variable Pin
supercat923-Mar-09 5:53
supercat923-Mar-09 5:53 
GeneralRe: How to increment a variable Pin
CurtD23-Mar-09 6:38
CurtD23-Mar-09 6:38 
GeneralRe: How to increment a variable Pin
supercat923-Mar-09 7:22
supercat923-Mar-09 7:22 
GeneralRe: How to increment a variable Pin
CurtD23-Mar-09 8:41
CurtD23-Mar-09 8:41 
supercat9 wrote:
If the variable i is equal to five before the statement, "i = i++;" is executed, would it not be legitimate for the compiler's generated code to read i (five), increment i (yielding and storing six), and then store the read value back to i (setting it back to 5)? If the variable i is not volatile, would not a legitimate optimization thus be to eliminate the statement altogether?


Well, according to MSDN, the C++ standard does not define the proper behavior when a postfix is applied to a function arg. If anyone knows why they decided to leave it up to the compiler writers instead of deciding on a "standard", I would love to know the reason. The best thing to do is not write code like this.

MSDN doesn't say specifically how a postfix is supposed to behave in the example i = i++. But, VS 2005 inc's i before storing it in i -- I assume because of operator precedence.

supercat9 wrote:
Out of curiosity, I wonder if there are any compilers which do not always update a variable used with a pre-increment before making use of the pre-incremented value? It's possible to contrive examples where the optimal code would in fact use (var+1) in the expression and then later store the incremented value to the variable, but I doubt compilers would find such optimizations.

When playing with this example, the optimizer did just that in one case -- it kept (i+1) in a reg, used it a few times, and stored it later.

The VS compiler will optimize away code that doesn't do anything.

void donothing()
{
   int i = 5;
   i++;
}

No code is generated for donothing() and any call to it is ignored.
GeneralRe: How to increment a variable [modified] Pin
CurtD24-Mar-09 8:34
CurtD24-Mar-09 8:34 
GeneralIt's the thought that counts Pin
CurtD18-Mar-09 15:07
CurtD18-Mar-09 15:07 
GeneralRe: It's the thought that counts Pin
Michael Bookatz19-Mar-09 7:24
Michael Bookatz19-Mar-09 7:24 
GeneralRe: It's the thought that counts Pin
CurtD19-Mar-09 12:34
CurtD19-Mar-09 12:34 
GeneralRe: It's the thought that counts Pin
Tony Pottier19-Mar-09 23:29
Tony Pottier19-Mar-09 23:29 
GeneralRe: It's the thought that counts Pin
Luc Pattyn19-Mar-09 7:28
sitebuilderLuc Pattyn19-Mar-09 7:28 
GeneralRe: It's the thought that counts Pin
Mycroft Holmes20-Mar-09 0:18
professionalMycroft Holmes20-Mar-09 0:18 
GeneralRe: It's the thought that counts Pin
supercat920-Mar-09 6:30
supercat920-Mar-09 6:30 
GeneralRe: It's the thought that counts Pin
CurtD20-Mar-09 12:03
CurtD20-Mar-09 12:03 
GeneralRe: It's the thought that counts Pin
Thomas Weller23-Mar-09 8:58
Thomas Weller23-Mar-09 8:58 
GeneralRe: It's the thought that counts Pin
CurtD24-Mar-09 8:12
CurtD24-Mar-09 8:12 
GeneralRe: It's the thought that counts Pin
Vikram A Punathambekar6-Apr-09 19:55
Vikram A Punathambekar6-Apr-09 19:55 
GeneralRe: It's the thought that counts Pin
BillW3323-Apr-09 6:47
professionalBillW3323-Apr-09 6:47 
GeneralRe: It's the thought that counts Pin
Megidolaon24-Mar-09 2:11
Megidolaon24-Mar-09 2:11 
GeneralVB Select Case statement incarnation of C# if (true = [condition]) Pin
David St. Hilaire14-Mar-09 6:36
David St. Hilaire14-Mar-09 6:36 
GeneralRe: VB Select Case statement incarnation of C# if (true = [condition]) Pin
Lutosław14-Mar-09 7:42
Lutosław14-Mar-09 7:42 
GeneralRe: VB Select Case statement incarnation of C# if (true = [condition]) Pin
David St. Hilaire14-Mar-09 10:34
David St. Hilaire14-Mar-09 10:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.