The assignment operator in C is treated just like any other binary operator. This means that the following statements are syntactically correct:

x = y = z = 0 multiple assignments
x = 1 + (y = 3) embedded assignments; assigns 3 to y, and 4 to x
1 + Function (0) result of expression isn't assigned to anything

In logical expressions, the following convention is used:

"false" = zero;
"true" = any non-zero value (1 is returned from logical expressions).

Where the operands of a binary operation (for example "x + y") are of different types, then the operand of the type listed lower in this table is converted to the type of the other operand (which is listed higher in the table):

long double
unsigned long int
signed long int
unsigned short int
signed short int