前言
接下来的一段时间,我们开启c语言的学习,针对0基础的小伙伴,我们从最基础的地方开始,相信每一位没有编程经验的小伙伴通过未来这段时间的学习,都能在编程道路上学有所成。话不多说,开启我们的学习。
C语言前言
c语言概述
首先我们学习c语言之前,先要知道什么是c语言,语言的发展历史又是什么样的。C语言是计算机编程语言的一种,编程语言用于人和机器交流。编程语言通过一系列的语法和语义规则来描述计算机程序的行为和逻辑,程序员使用编程语言编写程序后,计算机可以将程序转化为二进制指令(即机器码),并由CPU执行,CPU会按照指令的顺序依次执行每个指令。
语言发展历程:
机器语言:机器语言是一组由0和1系列组成的指令码,这些指令码,是CPU制作厂商规定出来的,然后发布出来,程序员必须遵守。
汇编语言:汇编语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,汇编语言和机器自身的编程环境息息相关,推广和移植很难。
高级语言:高级语言摆脱了计算机硬件的限制,把主要精力放在了程序设计上,不在关注低层的计算机硬件。高级语言要被计算机执行,也需要一个翻译程序将其翻译成机器语言,而翻译工作由编译器或解释器完成。C语言通过编译器翻译成机器语言
c语言特点
简洁:C语言的语法简单,语句清晰明了,使得程序易于阅读和理解。
高效:C语言的执行效率高,可以用于开发需要高性能的应用程序。
可移植:C语言可以在不同的硬件平台和操作系统上运行,具有较高的可移植性。
模块化:C语言支持函数和结构体等模块化编程方法,使得程序的复杂性得到有效控制。
标准化:C语言的语法和标准库已经被ISO和ANSI标准化,具有广泛的应用和兼容性。
c语言应用领域
系统软件:操作系统、编译器、数据库等。
嵌入式系统:智能家电、智能穿戴设备、智能汽车等。
网络设备:路由器、交换机、防火墙等。
游戏开发:电脑游戏、手机游戏等。
c语言的标准
C89(C90)标准
1989年,美国国家标准协会通过了C语言标准,简称C89。1990年,国际标准化组织接收并采纳C89作为国际标准。
C99标准
1999年,国际标准化组织和国际电工委员会正式发布了ISO/IEC 9899:1999,简称C99。C99引入了许多新特性,例如内联函数,变量声明可以不放在函数开头,支持变长数组。
C11标准
2011年,国际标准化组织和国际电工委员会正式发布C语言标准第三版草案N1570,称为ISO/IEC 9899:2011,简称C11。C11增强了C语言对C++的兼容性。
编程环境
语言分类介绍
编译型语言:c、c++
解释型语言:Python、JS
c原因编译器
GCC 系列
GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC),指一套编程语言编译器,常被认为是跨平台编译器的事实标准。原名是:GNU C语言编译器(GNU C Compiler)。
MinGW
又称mingw32 , 是将GCC编译器和GNU Binutils移植到Win32平台下的产物。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对 POSIX 规范的实现没有 Cygwin 库完备。
Cygwin
Cygwin的 主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上 。 Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB)
MSVC系列
与Visual Studio集成发布,微软自己的编译器,VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。
Dev-C++开发工具
开发工具种类繁多,有vscode、Dev-C++、code lite、clion、Qt Creator等,这里我们用的是小熊猫版本的C++,他是在Dev-C++的基础上完善修改的,因为他自带编译器,直接下载安装即可,无需我们进行复杂的环境配置或者插件安装。官网:https://royqh.net/redpandacpp/
基础语法
第一个c语言程序
代码分析:
- include头文件包含
-
- #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
- 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
- 头文件:在c语言中后缀名为h的文件被称为头文件,头文件就像一本书的目录,当我们想使用某本书里的内容时,只需把目录(头文件)引进来就可以了。
- main函数
-
- 程序的入口,一个程序有且只有一个main函数入口
- {}叫代码块,一个代码块内部可以有一条或者多条语句
-
-
- 所有的可执行语句必须是在代码块里面
-
-
- C语言每句可执行代码都是";"分号结尾
-
-
- 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
-
- printf函数
-
- printf是C语言库函数,功能是向标准输出设备输出一个字符串
- printf(“hello world\n”);
-
-
- \n的意思是回车换行
-
- return语句
-
- return代表函数执行完毕,返回return代表函数的终止
- 在main函数中return 0代表程序执行成功
注释:
注释是对代码的解释和说明,注释不会被执行,他能够让人们更加轻松地看懂代码。注释可以分为行注释 // 和块注释 /**/
数据类型
数据类型介绍
数据类型:c语言中数据类型有3种,分别是基本数据类型、构造数据类型、指针数据类型。
数据类型的作用:编译器预算数据分配的内存空间大小。
变量
在计算机程序中,变量是用来存储数据的一个内存区域,并用一个名字来表示这个区域。变量在使用前必须先定义,定义变量前必须有相应的数据类型,变量在程序运行中值可以改变。
标识符命名
命名规则:只能由数字、字母、下划线组成,不能使用数字开头,不能使用关键字,变量名之间的大小写是区分的。
命名规范:好的命名习惯要做到见名之意,如下:
大驼峰:每个单词首字母大写,如MyFirstName。
小驼峰:第二个单词开始首字母大写, 例如: myFirstName。
下划线命名:每个单词之间使用下划线连接, 例如: my_first_name。
char类型
char表示为字符类型,用于存储单个字符,每个字符变量都是由8个bit位构成,在内存中就是1个字节。
代码及示例
布尔类型
布尔类型是一种处理逻辑的类型,其有两个值,分别是真(true)或假(false),它在内存中的长度一般只占用1个字节。
代码及示例
数据类型长度
基本数据类型长度
示例代码
可移植的类型
最开始我们介绍C语言是一门跨平台的编程语言,使用C语言编写的程序可以在不同的系统平台下运行,这里有一些前提,为了更好的兼容不同平台,我们在使用基本上数据类型的时候会采用可移植的类型,这些类型可以确保在不同的平台下稳定的运行。
常量
自定义的常量有两种方法
预处理常量:#define PI 3.14
coust 常量:coust double pi2 = 3.14;
数值表示
进制
进制无非是二进制、八进制、十六进制,前面我们已经学习了进制间的转化,这里就不做过多赘述,简单演示一下他们之间的相互转化。
八进制和二进制之间的转换:
二进制和十六进制之间的转换:
c语言如何表示进制数
示例代码
数值存储方式
计算机底层都是存储数据都是采用二进制,但二进制也有几种,比如:原码、反码、补码。这里我们不做介绍,前几期内容中有介绍。
输出和输入
输出
将程序的运行结果输出到控制台或终端窗口中。
格式化占位符
代码示例
输入
接收用户输入的数据的过程。使用scanf: scanf(“格式化占位符”,&变量1,&变量2,...)
代码示例:
运算符
算数运算符
示例代码
赋值运算符
示例代码
比较运算符
示例代码
逻辑运算符
示例代码
位运算符
与运算
按位与(&)运算:对其补码 位与位进行比较,如果都为1,则为1,否则为0;
此处举例用负数,因为正数的反码和补码都是他本身
或运算
按位或(|)运算:对其补码 位与位进行比较,如果都为0,则为0,否则为1;
异或运算
按位异或运算:对其补码 位与位进行比较,相同为0,不同为1;
取反运算
右移运算符
左移运算符
总结
今天内容比较多,小伙伴们需要勤加练习,最后部分取反运算、右移运算符、左移运算符我们明天在学习,拜拜喽!