Recently I saw this while loop condition in C in the example below but I have no idea what the while condition really means and how the compiler knows when it is done. Could someone explain it to me?

This is what I believe it means: while loop iterates through the char array until the ending of the array since there is nothing else then the while loop ends, or am I wrong? I tried to use the same while loop but in another language such as Go, however, the compiler threw an error saying that I cannot use a non-bool. 

```
// C program to demonstrate 
// example of tolower() function. 

#include <ctype.h> 
#include <stdio.h> 

int main() 
{ 
    int j = 0; 
    char str[] = "GEEKSFORGEEKS\n"; 

    // Character to be converted to lowercase 
    char ch = 'G'; 

    // convert ch to lowercase using toLower() 
    char ch; 

    while (str[j]) { // <- this part, how is this a condition?
        ch = str[j]; 

        // convert ch to lowercase using toLower() 
        putchar(tolower(ch)); 

        j++; 
    } 

    return 0; 
} 

```