S_>Обьясните пожалуста как это работает и работает ли вообще в плане выделения памяти/времени жизни/области видимости (когда выделяется память для результата преобразования, выделяется ли вообще, когда освобождается, может ли программа падать изза этого)?
если r1 это действительно char, а r2 это действительно short, то это абсолютно корректный код. Никакая дополнительная память не выделяется.