need help debugging a program counting bits set from an integer number

The program is supposed to count the number of bits set by an integer. for example: 5 is 00000101 and has two bits set. compiling the program with debug statements makes me think that the program isn't even entering the integer into the loop

Code:

`/********************************************************`

* *

* FILE: ch10_ex4.c *

* CREATED: 8/15/07 *

* BY: bpf *

* *

* this program counts the number of bits set in an *

* integer *

* *

********************************************************/

#include<stdio.h>

main()

{

char line[100];

int itgr; /* the integer value of the input number */

int r; /* remainder */

int set = 0; /* number of variables set */

int n; /* index into the line of bits */

int subt = 0; /* the value to subtract from the remainder starts at zero each loop */

/* input number */

(void)printf("enter an integer: ");

(void)fgets(line, sizeof(line), stdin);

(void)sscanf(line, "%d", &itgr);

r = itgr; /* remainder starts off the same as the integer */

while(0)

{

/* if the remainder is equal to one, the one's column is set and the loop can stop */

if (r == 1)

{

set++;

break;

}

/* if the remainder is equal to zero the number of bits set are counted and the loop stops */

else{ if (r == 0)

{

break;

}

/* the highest multiple of two is counted up to and becomes the number subtracted from the remainder */

else{ for (n = 1; n <= r; n * 2)

{

subt = n;

}

/* the remainder is lowered and one column is set */

r = r - subt;

set++;

}

}

}

/* how many bits are set */

(void)printf("%d bits are set\n", set);

return(0);

}