简单的算法语句
第一篇C语言内容,先从哪里开始说呢?
那就先从C语言的历史开使说起吧!
⛳C语言的发明
最初由丹尼斯·里奇在贝尔实验室为开发UNIX操作系统而被设计出来。年份:1972年
C语言用处很广,比如:操作系统、语言编译器、现代程序、数据库、编程语言解释器、硬件控制等。一个C语言程序写在一个或多个扩展名为 .c 的文本文件中。
虽然C语言已经设计出来很久,但是它经久不衰,如今仍然很受欢迎。也是很流行的编程语言之一。
🎉C语言的语言类别
C语言是面向过程的的 一门语言,简单来说就是他没有对象类型(object),而且他是一门强类型的编程语言,大概意思就是声明变量时比较严格,有很强的类型检查机制。比如你如果声明了一个 int(整数型)的变量,那么这个变量只能赋值为整数类型,而不能赋值为字符或浮点型(小数)不然可能会报错。与强类型语言相对的是弱类型语言,比如:JavaScript、PHP、python等,它们在声明变量时,没有那么多的要求 比如JavaScript,他什么类型的变量都可以用一个关键字定义,而且可以赋值别的数据类型:
var a = 2;
var b = 's';
a = 'qwer';
但在C语言中这么赋值是不合法的。同时,C语言也是编译型的语言,C语言在执行前需要先编译,编译完成后才可以运行。与编译型语言相对的是解释型语言。这个笔者不再解释,总之,一般编译型语言比解释型语言运行速度要快。
✨C语言变量类型
这里说的变量类型也即——数据类型。在C语言中,数据类型比较多,而基本类型有三个:
- 整形(int)
- 浮点型(float)
- 字符型(char)
其它还有(不是基本类型): - void类型
- 指针类型
- 数组类型
- 结构类型
- 函数类型
- 联合类型
- 枚举类型
基本类型和枚举类型统称为算术类型
算术类型和指针类型统称为标量类型
数组类型和结构类型统称为聚合类型
而联合类型不被认为是聚合类型
指针类型、数组类型和结构类型都是派生类型

short、char、int、long、float、double这六个关键字代表C语言中的六种基本类型。
每种类型都会有一个类型标识符(或说是关键字),通过 类型标识符+变量名 的方式声明变量。比如整形的标识符是 int 那么声明一个整形变量格式如下:
int a; // a 是整形变量(名)
而字符型的关键字是 char,所以声明一个字符型变量就应该这样声明:
char str; // str 是字符型变量(名)
而本节只涉及到基本类型,其它类型在以后的篇节中会有涉及。
了解C语言的类型存储大小是 很有必要的!
在C语言中每种数据类型的存储大小也不近相同。所谓的数据类型存储大小就是说:当你声明一个变量时,你最多能给他分配多大存储空间来存它的值 存储大小我们应该不太陌生,比如当年在Windows下查看某文件夹或文件时,点击鼠标右键,进入属性,你会看到该文件(或文件夹)的占用空间:

在占用空间一项中你能看到:16.0KB(16,384字节)的字样。 1字节(byte) = 1/1024KB 字节以 B 为单位。即: 1字节 = 1B 而KB表示千字节, 1KB = 1024B (1024 = 2^10) MB 表示兆字节,1MB = 1024KB
在往上就是 GB, 1GB = 1024MB 。在C语言的存储大小是以字节为基本单位的。而且每个数据类型的赋值是有范围的,也即一个变量在赋值时,值的大小要在规定范围内,不然很可能会出错。下面给出各整数类型和浮点型的存储大小和值范围:
-
字符型:
| 数据类型 | 类型说明 | 存储大小 | 值范围 |
|---|---|---|---|
| char | 字符 型 | 1 B | -128~127或0~255 |
| unisigned char | 无符号字符型 | 1 B | 0~255 |
| signed char | 有符号字符型 | 1 B | -128~127 |
-
整数型:
| 数据类型 | 类型说明 | 存储大小 | 值范围 |
|---|---|---|---|
| int | 整形 | 2B或4B | -2*10^15 ~ 2*10^15-1或 -2*10^31 ~ 2*10^31-1 |
| unsigned int | 无符号整型 | 2B或4B | 0~65535或0~4294967295 |
| short | 短整型 | 2 B | -32768~32767 |
| unsigned short | 无符号短整型 | 2 B | 0~65535 |
| long | 长整型 | 4 B | -2147483648~2147483647 |
| unsigned long | 无符号长整型 | 4 B | 0~4294967295 |
| long long | 双长整型 | 8 B | -2*10^-63 ~ 2*10^63-1 |
| unsigned long long | 无符号双长整型 | 8 B | 0 ~ 2*10^64-1 |
-
浮点型:
| 数据类型 | 类型说明 | 存储大小 | 值范围 | 精度 |
|---|---|---|---|---|
| float | 单精度浮点型 | 4 B | 1.2*10^-38 ~ 3.4*10^38 | 6位小数 |
| double | 双精度浮点型 | 8 B | 2.3*10^-308 ~ 1.7*10^308 | 15位小数 |
| long double | 长双精度浮点型 | 10 B | 3.4*10^-4932 ~ 1.1*10^4932 | 19位小数 |
注意:你会发现,在存储大小和值范围中,有“或”,因为在不同的操作系统中其大小也可能不相同。特别是Windows和Linux两系统,他们的存储大小和值范围会有差别。值范围都比较大,特别是以 long 为关键字的数据类型。一般我们用 int char float double long 这五种类 型进行赋值(不容易超出范围)。对于值范围,我们不用死记,也没必要。
当超出值范围时一般也不会报错(极少情况下会超出),比如(在Dev-C++中测试):
int main(){
short a = 32768; // short 范围是:-32768 ~ 32767
printf("%d\n",a); // 没有报错,而是输出:-32768
return 0;
}
而在字符类型中,值范围在 -128 ~ 127(Windows下),比如:
int main(){
char b = -129;
printf("%d\n",b); // 打印结果:127
return 0;
}
当在Dev-C++中执行时,会出现一则警告(但能输出值):
[Warning] overflow in implicit constant conversion [-Woverflow]
大概意思是变量值溢出了(超出范围了)。
注意:在这个示例中你可能会发现,char 类型调用(printf函数)时,用的还是 %d 转义。因为 %d 表示的是整形转义,而 char 是字符型关键字,你如果使用字符转义—— %c 则打印结果会是 ASCII 码。假如你用 %f(浮 点型)来转义 char 类型,那也是可以的!因为C语言中也存在隐式转换!。
在说隐式转换之前,我们先说几个转义字符:
-
常量转义字符:
| 转义符号 | 含义 |
|---|---|
| \\ | \ 字符 |
| \' | ' 字符 |
| \" | " 字符 |
| \? | ? 字符 |
| \a | 警报铃声 |
| \b | 退格键 |
| \f | 换页符 |
| \n | 换行符 |
| \r | 回车键 |
| \t | 水平制表 |
| \v | 垂直制表 |
| \0 | 空字符(NULL) |
| \ddd | 一至三位的八进制数 |
| \xhh | 一个或多个数字的十六进制数 |