学习C语言的前提知识(下)



一、字符和ASCII编码

为了方便大家学习后面知识,我们要学习字符和ASCII值
我们先要有关于字符的基本了解。
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是用单引号括起来的,如:'a','b','@'

char c = '@';

我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了一个标准 ASCII 编码,C语言中的字符就遵循了 ASCII 编码的方式。
简言之,一个字符对应一个ASCII编码

详细ASCII码表<<<

当然,关于字符的知识远不仅此,后续将详细解答。


二、字符串与\0

C语言中如何表示字符串呢?使⽤双引号括起来的一串字符就被称为字符串,如:“abcdef”,就是一个字符串。
C语言字符串中一个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
为了检验,我们适应VS2022监视功能,对"abcdef"的字符串进行监视,如图:

int main()
{
	char str[] = "abcdef";
	return 0;
}

**VS监视窗口**
可见,"abcdef"的结尾确实有\0,且ASCII码值为0


三、转义字符

在前面的\0为什么是字符,大家可能还有些懵懵的😫
其实这是字符中的特殊一类——转义字符,顾名思义,转变原来意思的字符。
举个栗子:

#include<stdio.h>

int main()
{
	printf("abcdefnhk");
	return 0;
}

毫无疑问,屏幕上打印abcdefnhk
如果将程序改为这样呢?

#include<stdio.h>

int main()
{
	printf("abcdef\nhk");
	return 0;
}

屏幕上输出:
abcdef
hk
为什么会这样呢?
这就是转义字符的问题, \n 是⼀个转义字符表示换行的意思,我们可以简单的理解为 \n 的意思发生了转变, n 本来是一个普通的字符,被\转义为换行的意思。
这样神奇的转义字符还有很多:转义字符参考


四、语句

int main()
{
	printf("Hello World!");
	return 0;
}

通过我们第一个程序,我们很好奇为什么这样写,下面我来简单介绍一下:
C语言的代码是由一条一条的语句构成的,C语言中的语句可为以下四类:
• 空语句
• 表达式语句
• 函数调用语句
• 控制语句

1.空语句

int main()
{
	printf("Hello World!");
	;//空语句
	return 0;
}

一个分号就是一条空语句。空语句,⼀般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写一个空语句。

2.表达式语句

int main()
{
	int a = 100;//表达式语句
	return 0;
}

3.函数调用语句

int Add(int x,int y)
{
	return x + y;
}
int main()
{
	int a = 100;//表达式语句
	int b = 200;
	int c = Add(a, b);//函数调用语句
	return 0;
}

4.控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。
    后期会给大家一一介绍控制语句。

五、注释

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
注释是给程序员自己,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
有2种形式:

1./**/形式

用法:可以用于多行注释

int main()
{
	int a = 100;
	/*
	注释
	注释
	...
	*/
	return 0;
}

注意:

int main()
{
	/*
	printf("a ");
	printf("b ");
	printf("c "); /* 注释⼆ */
	printf("d ");
	*///error
	return 0;
}

在这个例子中,第一个/*与第一个*/匹配,这样的话,最后一个*/就会“落单”,从而报错。

2.//形式

第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是C99标准新增的语法

//int Add(int x,int y)
//{
//	return x + y;
//}

六、进制

进制,全称为“进位计数制”,是数学和计算机科学中用于表示数字的一种方法。不同的进制系统使用不同数量的符号(或称为基数)来表示数值。最常见的是十进制(base-10),我们日常生活中的计数和数学运算采用十进制。
十进制(base-10):
十进制是最常见的进制,使用10个符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 和 9。当一个位置上的数达到最大值(9)时,它会进位到下一个更高的位置,同时当前位置重置为0。
二进制(base-2):
二进制在计算机科学中极其重要,因为它直接对应于计算机内部的物理状态——开(1)或关(0)。二进制只使用两个符号:0 和 1。计算机的底层运算,包括CPU指令集和数据存储,都是基于二进制进行的。
八进制(base-8):
八进制使用8个符号:0, 1, 2, 3, 4, 5, 6, 和 7。在早期的计算机系统中,八进制曾经很流行,因为早期的字节大小通常是多位的倍数(如6位或9位),而八进制正好能整除这些位数。
十六进制(base-16):
十六进制使用16个符号:0-9 和 A-FA代表10,B代表11,以此类推直到F代表15)。在现代计算机科学中,十六进制特别有用,因为四位二进制数正好可以表示一个十六进制数字,这使得二进制和十六进制之间转换非常方便,从而简化了计算机硬件设计和编程语言中的表示。
比如十进制95,转换如下:

那么各种进制是如何转换的呢?如下图是一些常用的进制转换:
部分常见进制转换

(点个赞吧,制图不易😭

下面是一些例子:

问题:
1.十进制数1000对应二进制数为______,对应八进制数为______,对应十六进制数为______。
2.二进制的1000001相当八进制的______,相当十进制的______,相当十六进制的______。
3.八进制的100化为十进制为______,十六进制的100化为十进制为______。
———————————————————————————————————————————————
答案:
题1:
1111101000
1750
3e8
题2:
101
65
41
题3:
64
256

解析:
第一题:
第一题
第二题:
第二题
第三题:
第三题


七、总结

这样一来,对于C语言学习的入门级知识已经基本了解,可能你在看完文章后还是感觉不理解,这是正常的,因为前提知识的(上)(下)都只是让你有一个认识并不要求你完全掌握,接下来更细致更新,我一定会让你理解的。
如果你没有看过上期的话,我推荐你去阅读一下学习C语言的前提知识(上)
关注我,跟我一起学习C语言!(❤ ω ❤)🎉


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023dream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值