I have the following code

```
int a[5] = {20,-90, 450, -37,87};
int *p;

for(p=a; (char *)p <((char*)a+sizeof(int)*5 );) // this line I don't understand
      *p++ = ++*p<60?*p:0;

for(p=a; (char *)p <( (char*)a+sizeof(int)*5 );)
      printf("\n%d", *p++);

```

I can't understand the condition of the loop, what is the meaning of casting the pointer to char \*?
What will happen?

(I know what the body of the loop does)

Thank you very much