目录

1、位、字节、字

2、main函数

3、printf和库函数

4、关键字介绍

5、字符和ASCII编码

6、字符串和\0

7、转义字符

8、注释


1. 位、字节、字

  • 位(bit):位是计算机存储的最小单位,简记为b,每一位的状态只能是0或1。
  • 字节(byte):字节是计算机用于计算存储容量的一种计量单位,1个字节可以存储1个英文字母或者半个汉字。
  • 字:字是表示计算机自然数据单位的术语,在某个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。
    例如:一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的一个字就由2个字节构成,字长为16位。
  • 位、字节、字之间的关系
    1字 = 2字节 = 16位
    1 Byte = 8 bit
  • 计算机的存储
    1 B  = 8 bit;
    1 KB = 1024B;
    1 MB = 1024 KB;
    1 GB = 1024 MB;
    1 TB = 1024 GB;

2. 原码、反码和补码

  • 正数的原码、反码和补码是一样的。
  • 对于负数则不同
    原码:第一位表示符号位,其余为表示数值。
    反码:符号位不变,其余按位取反。
    ​​​​​​​补码:反码加1称为补码。补码=反码+1,反码=补码-1。

1的原码、反码、补码: a = 00000000 00000000 00000000 0000001

~1的补码 b = 11111111 11111111 11111111 11111110

~1的反码 c = b -1 = 11111111 11111111 11111111 11111101

~1的原码 d = 10000000 00000000 00000000 00000010

~1 = -2

0的原码、反码、补码: a = 00000000 00000000 00000000 0000000

~0的补码 b = 11111111 11111111 11111111 11111111

~0的反码 c = b -1 = 11111111 11111111 11111111 11111110

~1的原码 d = 10000000 00000000 00000000 00000001

~0 = -1

3. main函数

每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的,main 函数是程序的入口,main 函数也被叫做主函数。 main前⾯的 int 表示main 函数执行结束的时候返回⼀个整型类 型的值。所以在main函数的最后写return 0; 正好前后呼应

  • main函数是程序的入口
  • main函数有且仅有一个
  • 即使一个项目中有多个.c文件,但是只能有一个main函数(程序的入口只能有一个)

4. printf和库函数

在下面这段代码中使用了printf函数,实现在屏幕上信息的打印,printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进行信息的打印。上⾯的代码是使用printf 函数打印字符串。只要把想要打印的⼀串字符放 在双引号中并传递给printf函数就可以打印。

  • 使用库函数时,是需要包含头文件的,比如:这段代码中包含的就是stdio.h这个头文件
#include  int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n");return 0;}

接下来我们讲解一下 上面这段程序:

1. 程序的第一行 #include 是预处理器指令,告诉C编译器在实际编译之前要包含 stdio.h 文件。

2. 下一行 int main() 是主函数,程序从这里开始执行。

3. 下一行/*…*/将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。

4. 下一行 printf(…) 是C中另一个可用的函数,会在屏幕上显示消息 “Hello, World!”。

5. 下一行 return 0; 终止 main() 函数,并返回值0。

5. 关键字介绍

C语言中有⼀批保留的名字的符号,比如:int、if、return,这些符号被称为保留字或者关键字。

  • 关键字都有特殊的意义,是保留给C语言使用的
  • 自己在创建标识符的时候是不能和关键字重复的
  • 关键字也是不能自己创建的。

下表列出C语言关键字:

关键字说明
auto声明自动变量
break跳出当前循环
case开关语句分支
char声明字符型变量或函数返回值类型
const定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变
continue结束当前循环,开始下一轮循环
default开关语句中的”其它”分支
do循环语句的循环体
double声明双精度浮点型变量或函数返回值类型
else条件语句否定分支(与 if 连用)
enum声明枚举类型
extern声明变量或函数是在其它文件或本文件的其他位置定义
float声明浮点型变量或函数返回值类型
for一种循环语句
goto无条件跳转语句
if条件语句
int声明整型变量或函数
long声明长整型变量或函数返回值类型
register声明寄存器变量
return子程序返回语句(可以带参数,也可不带参数)
short声明短整型变量或函数
signed声明有符号类型变量或函数
sizeof计算数据类型或变量长度(即所占字节数)
static声明静态变量
struct声明结构体类型
switch用于开关语句
typedef用以给数据类型取别名
unsigned声明无符号类型变量或函数
union声明共用体类型
void声明函数无返回值或无参数,声明无类型指针
volatile说明变量在程序执行中可被隐含地改变
while循环语句的循环条件

C99新增关键字

_Bool_Complex_Imaginaryinlinerestrict

C11新增关键字

_Alignas_Alignof_Atomic_Generic_Noreturn
_Static_assert_Thread_local

6. 字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:’a’,’b’,’@’。

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

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储。

下面列出ACSII码表:

  • 字符A~Z的ASCII码值从65~90
  • 字符a~z的ASCII码值从97~122
  • 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
  • 数字字符0~9的ASCII码值从48~57
  • 换行\n 的ASCII值是:10
  • 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察

7. 字符串和\0

C语言中使用双引号括起来的一串字符就被称为字符串,如:”abcdef”,就是一个字符串。

字符串的打印格式可以使用%s来指定,也可以直接打印。如下:

#include int main(){ printf("%s\n", "hello C"); printf("hello c"); return 0;}

对于字符串”abcdef”,我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个 \0 转义字符, \0 是字符串的结束标志。所以我们在使用库函数 printf() 打印字符串或者strlen() 计算字符串长度的时候,遇到 \0 的时候就自动停止了。如果数组中存放一个一个的字符而没有\0作为结束标志,就会在正常打印之后再打印一些随机值。

8. 转义字符

在字符中有一种特殊的字符就是转义字符,前面看到的\n、\0都是转义字符。

转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。而转义字符的转义是指字符已经被转换了意义。

C语言中一些常用的转义字符,如下:

  • \” />
  • \\:表示一个反斜杠,防止被解释为一个转义序列符
  • \a:警报
  • \b:退格键,光标回退一个字符,但不删除字符
  • \f:换页符,光标移到下一页
  • \n:换行符
  • \r:回车符,光标移到本行的开头
  • \t:制表符,光标移到下一个水平制表位(跳到下一个tab位置)
  • \v:垂直分隔符,光标移到下一个垂直制表位
  • \ddd:1到3位八进制数所代表的任意字符,如\130 查ASCII码表八进制数130表示字符X
  • \xhh:十六进制所代表的任意字符,如\x30查ASCII码表十六进制数30表示字符0

9. 注释

C语言中有两种注释方法

  • 第一种是将注释放在/**/之间,内部可以换行,这种注释可以插在行内,记得*/结束符号
  • 第二种写法是将注释放在双斜杠//后面,从双斜杠开始到行尾都属于注释,但只能单行

无论哪种注释都不要放在双引号里,双引号里的注释符号会成为字符串的一部分