char
является целочисленным типом, как и int
и long
, поэтому вы можете сложить их вместе и использовать %
для значения экземпляра char
.
Так же, как вы можете добавить int
s и %
их.
Это объясняет, почему вышеприведенный работает .
Что это означает - это другой вопрос, и он не так очевиден.Это может быть char
, который использовался из-за его диапазона, но используется как целочисленный тип.Хладнокровно, что это функция, которая преобразует символы нижнего регистра в верхний регистр (или наоборот), но без большего контекста невозможно сказать.
Вполне возможно, что используемый вами декомпилятор неверно истолковал (или не может полностью интерпретировать) IL и представляет вам нечто, эквивалентное IL, но это не то же самое, что и исходный код.