流心
发布于 2024-04-28 / 3 阅读
0

字符类型

  • char 是一种整数,也是一种特殊的类型:字符。

  • 用单引号表示的字符字面量:'a','1'

  • ''也是一个字符

  • printf 和 scanf 里用 %c 来输入输出字符

字符的输入和输出

char c;
scanf("%c",&i);
printf("c = %d\n",c);	// 输出 49
printf("c='%c'\n",c);	// 输出 1
  • 输入'1'这个字符给char c

    • char d = '1'; // 输出 49

    • char c = 1; // 输出 1

    • 如果两个比较是不相等的,而且在计算机内部会有特点的数字来表达字符 '1',作为字符来输出 '1' 就是等于 49 ,如果按照整数来输出就是 1

    • 如果是 char b = 'A';

    • 那输出结果就是65

int i;
char c = 1; 
scanf("%d",&i);
c = i;	// char不能使用 %d 输出所以要赋值给 c
printf("c = %d\n",c); // 1
printf("c='%c'\n",c); // ' '

int i;
char c = 49; 
scanf("%d",&i);
c = i;	// char不能使用 %d 输出所以要赋值给 c
printf("c = %d\n",c); // 49
printf("c='%c'\n",c); // '1'
  • '1' de ASCII 编码是 49 所以当 c == 49 ,它就代表 '1

  • 为什么‘A‘的ASCII码是65,‘a‘是97呢

    • 65的二进制是0100 0001,97的二进制是0110 0001,它们的后五位0 0001都表示十进制的1,说明'A','a'是第一个字母。如果你尝试着把字母表的'B','b'的ASCII转换为二进制会发现后五位都表示为十进制的2。数字字符和对应整数的二进制只有2位之差,比如字符'1'(即49)的二进制为0011 0001,整数1的二进制为0000 0001,两者的后四位均为0001,均表示十进制的1

字符计算

  • 一个字符加一个数字得到 ASCII 码表中那个数之后的字符

  • 两个字符的减得到它们在表中的距离

大小写转换

  • 字母在 ASCII 表中是顺序排列的

  • 大写字符和小写字母是分开排列的,并不在一起

  • 'a'-'A'可以得到两段之间的距离

  • a + 'a' - 'A' 可以把 一个大写字母变成小写字母

  • a + 'A' - 'a' 可以把 一个小写字母变成大写字母

逃逸字符

  • 用来表达无法印出来的控制字符或特殊字符,它由 \ 开头,后面跟上另一个字符,两个字符合起来,组成一个字符

    • \b 回退一格

    • \t 到下一个表格位

    • \n 换行

    • \r 回车

    • \" 双引号

    • \' 单引号

    • \\ 反斜杠本身