关于C++中指针运算的一些问题

在这张图片中写个题,我想问一下划红线的那一句该怎么解释,他这个小写转大写的运算我没整明白。为什么要是char()的形式,为什么*ptr加上ASC码之差就能变成大写。

img

首先是if 的条件,你看懂了吧?当遇到小写字母的时候。。。。
*ptr - 'a' 知道什么意思?就是该小写字母到a 的距离,再 + A,那不就变成大写?

'A'-'a'=-32;
ptr是小写的时候才会进
char(
ptr+'A'-'a')
*ptr='e'的时候,ascii为101
101-32=69
'E'的ascii为69
如果大写则直接输出

因为B和b的ASCII差值等于A到a,其它的字母也一样