|
|
View previous topic :: View next topic |
Author |
Message |
DerWolf
Joined: 30 Jan 2010 Posts: 8
|
for statement |
Posted: Wed Feb 10, 2016 1:53 am |
|
|
Hello,
is there a difference between ++idx or idx++ in a for statement? There is not in c#.
e.g.
Code: | for(idx = 0; idx < CmdIndex; idx++){
Buffer[idx] = Buffer[idx + 1];
} |
Code: |
for(idx = 0; idx < CmdIndex; ++idx){
Buffer[idx] = Buffer[idx + 1];
} |
Thanx |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19518
|
|
Posted: Wed Feb 10, 2016 3:43 am |
|
|
This is the same in C, C++, C#, and Java (and probably most other languages).
++n, increments 'n' _before_ using it in the operation.
n++, increments 'n' _after_ using it in the operation.
Now, as used here in the for loop, it'll make no apparent difference, since you make no other 'use' of n inside the operation where the increment occurs. However, if you make use it:
Code: |
#include <18F4520.h>
#device ADC=10
#use delay(crystal=20000000)
#use rs232(UART1,ERRORS,BAUD=9600)
void display(int8 n)
{
//demo, just output n^2 on a line
printf("%d\n",n*n);
}
void main()
{
int8 n;
for (n=0;n<8;display(++n))
;//whatever else you want here;
while(TRUE)
;
}
|
Now here, instead of just incrementing it, I print out 'n^2' in a little statement.
If you use ++n, you see:
1
4
9
16
25
36
49
64
However, use n++, and you get:
0
1
4
9
16
25
36
49
Note the difference.
So because you are doing nothing 'else' with 'n' at this point, it makes no difference if you increment first or second. However if your code did anything else with 'n', then it matters. |
|
|
RF_Developer
Joined: 07 Feb 2011 Posts: 839
|
|
Posted: Wed Feb 10, 2016 4:08 am |
|
|
It is conventional to post increment (i++) or decrement in a for loop, but not required. Also, the "increment" is in fact a statement that's executed at the end of each loop, and as its a statement, it can be very complicated. Effectively the work of a program can be done in a for loop statement. It can also be empty, doing nothing. Though its conventional, and therefore advisable to keep it short and simple. Personally, if I'm doing something other than a simple increment/decrement, I add comments to explain why I coded it that way and how it works.
Code: |
while(TRUE)
{
... Do main loop of program
}
// can be, and often was in C's early years:
for(;;)
{
... Do main loop of program
}
// and could be, if one wanted to be obtuse:
for(;; {
... Do main loop of program
}); // Note there's no body of the for loop here - its all done in the "increment".
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|