An assignment operator evaluates to the value assigned. Some expressions have side effects, which change memory. An expression's side effects must have taken place only at sequence points. Logical operators evaluate to 1 if true and 0 if false. An operator can only evaluate its operands if they are all the same data type.
All unary operators have the same precedence and associativity.
C doesn't provide a separate string data type. Array indexes begin at 0. Variables represent storage, pointers represent addresses. Function arguments are passed by value. To make global changes in a function's argument requires that pointers to those arguments be passed to the function.