携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天,点击查看活动详情
👋『大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流>』
✔「life motto」⇢ 种一棵树最好是十年前⇿其次是现在👌
📝<juejin>个人主页⇥謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)
📚<系列专栏>⇥C语言关键字🍻 - 謓泽的专栏 - 掘金 (juejin.cn)
🏆2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]
⛳⛳⛳这是一个全新的专栏系列围绕着C语言当中关键字进行详细深度讲解,保证小白看了也能看的懂哟🌊🌊🌊
④ char ⇿ 字符型
⒈描述 ⇨ char 字符型变量是用来存储字符常量的变量,字符型变量在内存空间所占字节大小为1个字节,%c 所对应的是打印字符的格式数据,取值范围是 -128 ~ 127。无符号字符unsigned char的取值范围:0~255。
⒉作用 ⇨ 定义一个字符型变量的方法是使用关键字 char,例如:char str = 'A';
⒊注意 ⇨ 字符数据在内存中存储的是字符的 ASCll 码,即使是一个无符号整数,其形式与整数的存储形式一样,因为C语言的字符型数据与整形数据之间通用。
⒋实际上字符型是被称之为整形字符类型('单引号')如果不信你可以用sizeof关键字求下单引号字面值、常量看下它所在的字节大小是不是一个整形(⒋字节)的。
- 在C++语言当中它还是一个字节的。
#include <stdio.h> int main(void) { char a = 'a'; printf("%c\n", a); return 0; }
🖊存储示例 a 字符的代码,在上面代码当中字符也是区分大小写的。
#include <stdio.h> int main(void) { char ch = 'A'; printf("%d\n", ch); return 0; }🍊代码解析✔例如,ASCLL 码中,整数 65 代表大写字母 A。因此,存储字母 A 当中实际上存储的是整数 65 的值。
🍏拓展层面✔ char 是整数类型。同时也是一种特殊的类型字符,这是因为:可以用单引号表示字符常量如→'A'、'8',单引号' '也是一个字符。
🍅 注✔ 字符'1',和阿拉伯数字的①是不一样的,字符是字符,阿拉伯数字是整数,示例代码如下所示↓
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { char a = '1'; printf("%d", a); }📙编译运行结果→49
解释⇢『ASCll码的字符1对应着十进制的49,因为我们这里的是格式符是%d所以应该是字符转换十进制的形式』
📑拓展知识点→我们可以通过一个程序看下char类型数字的1和char类型单引号的'1'是否是相等的。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { char a = '1'; char b = 1; printf("a = %d\n", a); printf("b = %d\n", b); if (a == b) printf("YES\n"); else printf("No\n"); return 0; }运行如下🖊
a = 49
b = 1
No
★上述代码值得去思考下,如果你明白了其中的道理,那么你也就明白了。
㈠拓展知识点如下⇲ 假设以 signed char 为例。
0 000 0000 ⇢ 其中最高比特位是符号位『红色位符号位』从而意为着只有⒎个数值位。
假设,以原码位标准如下↓
1 111 1111 ⇥ -127
0 111 1111 ⇥ +127
1 → 符号位表示负数、 0 **→ 符号位表示正数。 **注:负数是因为char实际上实际也是整形类型,而且是有符号的那么必然会出现负数的。
注:负数以补码为标准,正数原码、反码、补码、表达都是一样的。
📝说明⇢当 char 表示为负数的时候如下↓
表示的数字有2的七次方 2^7=128个 ,从 -127~-(负)0其中-(负)0的原码是→1 000 0000 补码是→1 0000 0000,多出了一位比特位。
由于 char 只取 ⒏位,所以截断后变为 0000 0000,这与+0所表示的数是一样的,所以为了不能浪费 1000 0000 这个数值,我们规定用1 000 0000 这个位来表示 -128 的数字。