小伙伴们大家好,今天也要撸起袖子加油干!万事开头难,越学到后面越轻松~
话不多说,开始正题~
前提回顾:
接上次博客,我们学到了转义字符,最后留下两个转义字符不知道大家有没有动手尝试了一遍,在这里给大家演示一遍
\ddd 表示 1~3 个八进制的数字
\xdd 表示 2 个十六进制的数字
#include <stdio.h>
int main()
{
printf("%c", '\123');
/*这里由于是八进制 \123 输出的结果应该为83所对应的ASCII码为S
3 * (8**0) + 2 * (8**1) + 1 * (8**2) == 83 【该行为83的计算过程】 */
return 0;
}
#include <stdio.h>
int main()
{
printf("%c", '\x23');
/*这里由于是十六进制 \x23 输出的结果应该为35所对应的ASCII码为#
3 * (16**0) + 2 * (16**1) == 35 【该行为35的计算过程】 */
return 0;
}
ASCII表如下图,大家可以试着找找,看输出结果是否一致
恭喜大家攻克上次遗留的问题
下面我们正式进入今天的话题
一、关于 strlen 与转义字符之间的小陷阱
首先 strlen 的作用是计算字符串的长度
然后你尝试了一行代码如下:
#include <stdio.h>
int main()
{
printf("%zd",strlen("\\ta\11"));
return 0;
}
当你信心满满本以为会输出 7 的时候,殊不知,你已经走入了陷阱
当结果输出 4 的时候,你充满了震撼,what???
这个时候为什么会是 4 呢?大家还记得前面的转义字符吗?转义字符的长度是为1的
这个时候你恍然大悟,找到两个转义字符 \\ \11 ,终于理解了为什么输出了 4
二、C语言的五种语句
空语句:单纯一个分号就是一个空语句
表达式语句: 表达式+;
函数调用语句:写出一个函数的时候我们一般会调用函数,这条语句是函数调用语句
复合语句:就是括号里面的语句一起组成
控制语句:是控制程序流程的语句,一般用来实现三种结构(顺序结构,选择结构,循环结构)
三、四种数据类型
基本类型 整型 int
浮点型 float
double
字符类型 char
构造类型 数组类型
结构体类型
联合体类型
枚举类型
指针类型
空类型
1.布尔类型(Bool)
介绍一个布尔类型,算是 int 子型,是专门用来创建真 / 假,一般我们也可以用 0 表示假,1表示真
首先布尔类型要包含头文件 #include <stdbool.h>
其次布尔类型只能有两种情况 true 或者 faulse
用法为 _Bool = true / faulse;
2.数据类型大小
先让大家了解一下计算机中的单位,首先计算机中有二进制位分别是 0 和 1,一个 bit 可以存放1个二进制位,基本换算如下:
1 Byte = 8 bit
1 KB = 1024 Byte
1 MB =1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB
PS:Byte 叫做字节
这个时候我们以字节为单位来看看数据类型的大小:
数据类型 字节大小 代码
char 1 printf("%zd\n",sizeof(char));
bool 1 printf("%zd\n",sizeof(_Bool));
int 4 printf("%zd\n",sizeof(int));
short 2 printf("%zd\n",sizeof(short));
long 4 printf("%zd\n",sizeof(long));
long long 8 printf("%zd\n",sizeof(long long));
float 4 printf("%zd\n",sizeof(float));
double 8 printf("%zd\n",sizeof(double));
long double 8 printf("%zd\n",sizeof(long double));
PS: sizeof 并不会计算表达式
3. signed & unsigned
signed 有符号
unsigned 无符号
我们举个例子来了解一下:
signed int n; 有符号整型,可以存放正整数和负整数
unsigned int n; 无符号整型,只能存放正数,范围更大
而我们一般写的 int n; 就是省略了 signed
4.局部变量和全局变量
这个大家就记住括号里面的一般是局部变量,括号外面是全局变量
当局部变量和全局变量名字相同时,局部变量优先使用
好啦,今天内容就到这里啦~
大家要多上手实操,加油!