What does double ampersand do in this program?
I am learning how to create processes by using fork, and I am confused in the following. This is the code:

    int main() {
        int ret = fork();
        // printf("%d\n", ret);
        ret = ret && fork(); /* Here is where I am confused*/
        // print("ret: %d\n", ret);
        if(ret == 0) {
            fork();
        }
        printf("Hello world\n");
        return 1;
    }

So, what is the use of double ampersand exactly doing?
I ran the program with a "printf" to know what was exactly the values, but it became more confusing because the output in the first "printf" is 0 and the second "printf" is "1". So I am not quite sure what is double ampersand doing. 

I appreciate the help! 

What does double ampersand do in this program?
===

I am learning how to create processes by using fork, and I am confused in the following. This is the code:

    int main() {
        int ret = fork();
        // printf("%d\n", ret);
        ret = ret && fork(); /* Here is where I am confused*/
        // print("ret: %d\n", ret);
        if(ret == 0) {
            fork();
        }
        printf("Hello world\n");
        return 1;
    }

So, what is the use of double ampersand exactly doing?
I ran the program with a "printf" to know what was exactly the values, but it became more confusing because the output in the first "printf" is 0 and the second "printf" is "1". So I am not quite sure what is double ampersand doing. 

I appreciate the help! 
