see this code
  #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) 
  int array[] = {23,34,12,17,204,99,16}; 
  int main() 
  { 
      int d; 
      for(d=-1;d <= TOTAL_ELEMENTS-2;d++) 
          printf("%d\n",array[d+1]); 
      return 0;
  }
now this loop won't run. sizeof() would return an unsigned value so TOTAL_ELEMENTS has an unsigned value. now , coming to the for loop, please tell me if the unary operator '-' works on signed int 2 or an implicit conversion takes place into unsigned and then the '-' operator works.