pm rao wrote:
> Hi All,
> 
> Could you please help me out in analysing this issue:
> 
> I really find strange behavior with the following code. If the
> statement b is present as below, the for loop is executing infinitely.
> But when statement b is replaced with statement a as
> int c[31], s[31];. Then the for loop is exited after n iterations.
> Below is my gcc version where i executed the code. Please help me out
> in this regard.
> 
> int c [30], s[30]; // statement b
> 
> #include <stdio.h>
> void change (int a[], int, int);
> int main ()
> {
> int d[3];
> d[0] = 1, d[1] = 10, d[2] = 25;
> int n = 30, k = 3;
> change (d, k, n);
> return 1;

return 0;

> }
> 
> void change (int d[], int k, int n)
> {
> int c [30], s[30]; // statement b
> c[0] = 0;
> int p;
> int min, i, coin = 0;
> 
> for (p=1; p<=n; p++)

Appears to evaluate to:  for (p = 1; p <= 30; p++)

Can you spot the problem?  Hints:  Array boundaries...you are 
overstepping them.  Zero-based arrays...

> {
> c[p] = 0;
> s[p] = 0;
> printf ("\n test : %d \n", p);

You need to find a good IDE that can interface with gdb.  KDevelop has a 
decent IDE.  But gdb leaves a lot to be desired for when stacked up to 
the far superior VC++ debugger.  Using printf() is a terrible way to 
debug when you can set a breakpoint and step through the code 
line-by-line and look at all the values of the variables within a GUI.


> }
> }
> 
> gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
> Copyright (C) 2006 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


-- 
Thomas Hruska
CubicleSoft President
Ph: 517-803-4197

*NEW* MyTaskFocus 1.1
Get on task.  Stay on task.

http://www.CubicleSoft.com/MyTaskFocus/

Reply via email to