目录
前言
经过网上资料的参考和自己的总结,c语言大小写字母转换至少有三种方法。对于我们c语言初学者来说,其实可以通过该问题的思考,从ASCII表到表达式求值再指针,初步感受他们的魅力所在。
总结摆在前面
1.指针思考的拓展
指针广义上来说,可以不仅仅是十六进制的地址,ASCII中的值又何尝不是一种地址,告诉你ASCII的值就相当于告诉了他的指针,通过指针我们可以找到其对应的字符。对ASCII值(指针)进行加减运算,可以得到另一个指针,对应另一个字符。如
dec | ch |
65 | A |
97 | a |
A的ASCII值为65,也可以理解为A的地址(指针)是65(0x41),指针加32,变为97,指针最后就指向了字符a。
2.浅提一下表达式求值
对于表达式求值,笔者在从二进制和内存的底层来探究同一数据在不同类型下的调用(链接)中分享了我对表达式求值的思考。这里我再分享一些新的看法
不管是定义一个变量,数组,抑或是函数,首先都有一个地址,地址一定会返回一个值(真数字),然后再根据你的数据类型,转换成或int,或char等的数据。
char ch = 'A' + 32;
我们要将’A'+32看成表达式求值,为97,char类型的97就是a了。
三种方法
1.利用ASCII相差32
1.1以表达式求值的思考方式
#include<stdio.h>
int main()
{
char ch;
printf("请输入:>>");
scanf("%c", &ch);
if (ch >= 'a' && ch <= 'z')
{
ch -= 32;
printf("%c\n", ch);
}
else if (ch >= 'A' && ch <= 'Z')
{