clearly, it's returning the uppercase of the character given to the function.The first return statement only works if the condition cl>='a'(i.e.97 in decimal) AND cl<='z'(i.e 122 in decimal).If it does so then the second return statement is not executed, but if it does not then the second return statement is executed and returns whatever character was given to the function.So if you give any upper case characters or symbols then they will be returned unchanged.But if you give any lower case characters, let's suppose 'b'
then this line
return ('A' + c1 - 'a');
looks like this
this ascii table might help you further.
have a lovely day!