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.