Something simply I'm sure

why 2 ='s are needed

Because that is the way the writers of the C language wanted it. It distinguishes between one = meaning an assignment
Make one thing equal to this other thing.

And two equals == a comparison
Is this thing equal to that thing.

Other languages use other things. For example Fortran used .EQ. for a comparison.