| Left |
Result |
|
Right |
| 1 | char | |
| char | | as is |
| literal2 | | high-order 8 bits discarded |
| literal4 | | high 3 bytes discarded |
|
| 2 | literal2 | |
| char | | high-order 8 bits are 0 |
| literal2 | | as is |
| literal4 | | high 2 bytes discarded |
|
| 3 | integers | |
char,literal2 or literal4 |
| 4 | literal2 | |
integers in the range -65536 to 65535 |
| 5 | char | |
literal2 or literal4 in the range 0 to 255 |
| 6 | literal2 | |
pairs of chars are converted to literal2s |
| 7 | char or U16 | |
| U8 | | converted to U16 |
| ASCII | | as is |
| literal2 | | if all values <128, convert to ASCII, otherwise as is |
| U32 | | if all values <128, convert to ASCII, otherwise converted to U16 |
| integers | | the range 0 to 16b10ffff converted to U16 |
an empty right argument produces an empty char result
|
| 8 | U8 | |
| U16 | | converted to U8 |
| U32 | | converted to U8 |
| char | | as is |
| integers | | the range 0 to 16b10ffff converted to U8 |
an empty right argument produces an empty char result
|
| 9 | char or U32 | |
| U8 | | converted to U32 |
| ASCII | | as is |
| U16 | | if all values <128, convert to ASCII, otherwise converted to U32 |
| literal4 | | as is, and any valid surrogate pairs are converted |
| integers | | converted to literal4 |
an empty right argument produces an empty char result
|
| 10 | literal4 | |
| char | | promoted to literal4 |
| literal2 | | promoted to literal4 |
| literal4 | | as is |
| integers | | converted to literal4 |
each char or literal2 is promoted to literal4 character by character, no U8 or U16 encoding assumed
|