#include <stdio.h>
#include <assert.h>
// http://stackoverflow.com/a/37044707/1116364

unsigned long calculate_max_ulong(void) {
  unsigned long follow = 0;
  unsigned long lead = 1;
  while (lead != 0) {
    ++lead;
    ++follow;
  }
  return follow;
}

int main(void) {
  assert(sizeof(long) == sizeof(unsigned long));
  unsigned long umax_h = calculate_max_ulong() / 2u;
  long max = umax_h;
  long min = - max - 1;
  printf("Range of long (%zu): %ld to %ld\n", sizeof(long), min, max);
  return 0;
}
