A value of type char can be assigned to a variable of type int. An implicit widening conversion will convert the value to an int.
An assignment statement is an expression statement. The value of the expression statement is the value of the expression on the right hand side. Since the assignment operator is right associative, the statement a = b = c = 20 is evaluated as follows: (a = (b = (c = 20))). This results in the value 20 being assigned to variable c, then the same value being assigned to variable b and finally to variable a. The program will compile correctly and display 20 when run.
Strings are objects. The variables a, b, and c are references that can denote such objects. Assigning to ...