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); }