一、介绍
进行软件开发之前,首先要知道软件开发,所依赖的基础,开发环境,以及编程语言,对于编程语言大体上可以分为如下两类:
1、编译型语言:C/C++, java 等,此类语言,均需要编译生成可执行文件(也就是软件)
2、解释性语言:python,javascript,php等,此类语言依赖代码解释器解析执行。
历史由来:C 语言诞生于 1972 年,由美国贝尔实验室的丹尼斯・里奇(Dennis Ritchie)在开发 UNIX 操作系统的过程中设计出来。当时,为了让 UNIX 系统具有更好的可移植性(之前的操作系统大多用汇编语言编写,移植困难),需要一种高级语言来替代汇编语言。
C语言,可以用来开发嵌入式软件,操作系统,游戏后台开发,数据库管理开发等;
二、前期准备
这里采用vscode + mingw的编译运行环境,可以参考如下博客配置环境:
VS Code 配置 C/C++ 编程运行环境(保姆级教程)_vscode配置c++环境-CSDN博客https://blog.csdn.net/qq_42417071/article/details/137438374
代码注释符号介绍
// “//” 双斜杠这一行为注释行,是单行注释符号 /* 这里为注释包含行,可以跨多行注释 */
一行语句介绍用分号 ";"
{}:括号包起来的一段语句,为一个代码段;
本节代码仓库:
cPart1 · CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppstudy/tree/master/cPart1
若不知道如何使用代码仓库的,可以参考下面的教程:
Git 使用教程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145973543?spm=1001.2014.3001.5501
开始之前对本节内容有个大概认识如下:
三、第一个程序
hello.c
#include<stdio.h>int main()
{printf("Hello world\n");return 0;
}
执行结果显示如下:
四、变量常量与类型
1、数据类型:
(常用:bool/char/int/float/double)
(1)、布尔类型(bool): true/false;
(2)、字符类型:(char 有符号字符型,表数范围-128 - +127)和unsigned char(无符号字符型,表数范围0 - 255),用来表示一个字符数据,都占一个字节(1Byte=8bit)存储空间;
(3)、整型:
a、短整型:short(短整型,表数范围-32768 ~ +32767)和unsigned short(无符号短整型,表数范围0 ~ 65535)都占2Byte;
b、整型:int(整型,表数范围-21.47亿 ~ +21.47亿)和unsigned int(无符号整型,表数范围0 ~ +42亿)都占4Byte
c、长整型:long在大多数 32 位系统中,占用 4 个字节(32 位)的内存空间,表数范围跟int一致;但是在64位系统中占用 8 个字节,范围(-2^63 ~2^63 - 1);
(4)、浮点型:float(单精度浮点型,占4Byte,表数范围+10^-38 - +10^38和-10^38 - -10^-38)和double(双精度浮点型,占8Byte,表数范围+10^-308 - +10^308和-10^308 - -10^-308)
(5)、void(空类型):即不确定类型,通常作为类型占位符使用;
如下代码:
#include <stdio.h>
#include <stdbool.h> // 引入bool类型#define PI1 3.14 // 宏定义int main()
{bool b = true; // 布尔类型char c = 'a'; // 字符short s = 1; // 短整型int i = 10; // 整型long l = 100; // 长整型float f = 0.1; // 单精度浮点数double d = 8.8; // 双精度浮点数const int cst = 999; // 常量"aaaa"; // 字符串常量return 0;
}
这里数据后接着的字符表示的是变量;
2、变量
“可变的量,存放在内存中”
变量命名规则:
1.要为C语言合法标识符(由字母、数字和下划线构成,并且不能以数字开头)
2.不能和关键字(有特殊意义的标识符)同名
C语言是大小写敏感的语言,即在C语言中,大小写不同的两个标识符会被认为是两个不同的标识符
3、常量
“一旦定义就不能改变的量”
定义常量的两种方式:使用define预处理命令或const关键字
字面常量:
'a'为字符型常量
"abcd"为字符串常量
五、运算符表达式
根据运算功能分类:
1、算术运算符
+,-,*,/,%(模运算符),++(自增运算符),--(自减运算符) 自增运算符分为前置自增和后置自增两种,自减运算符也一样
2、赋值运算符
=,+=, -=
3、关系运算符
,>=,!=,运算结果是一个布尔(逻辑)值,即真或假
4、逻辑运算符
!(逻辑非),&&(逻辑与),||(逻辑或)
5、位运算符
~(按位取反),&(按位与),|(按位或),^(按位异或)
6、条件运算符
?:
(判断条件)?语句1:语句2;
条件成立:执行语句1,负责执行语句2;
cBase.c
#include <stdio.h>
#include <stdbool.h> // 引入bool类型#define PI1 3.14 // 宏定义int main()
{bool b = true; // 布尔类型char c = 'a'; // 字符short s = 1; // 短整型int i = 10; // 整型long l = 100; // 长整型float f = 0.1; // 单精度浮点数double d = 8.8; // 双精度浮点数const int cst = 999; // 常量"aaaa"; // 字符串常量// 算术运算符i = s + l; i = l - s;i = s*l;i = l/s;int r = i % s; // 取余,就是i 数据除以 s数据的余数;++i;s++;--i;s--;// 赋值运算符i+=s;i-=s;// 关系运算符b = (i > s);printf("i = %d, s = %d, b = %d\n", i, s, b);// 这里的%d,是控制符,表示控制整型数据输出bool b1 = (l < i);printf("l = %d, i = %d, b1 = %d\n", l, i, b1);bool b2 = (s >= l);printf("l = %d, s = %d, b2 = %d\n", l, s, b2);bool b3 = (s <= l);printf("l = %d, s = %d, b3 = %d\n", l, s, b3);bool b4 = (s != l);printf("l = %d, s = %d, b4 = %d\n", l, s, b4);// 逻辑运算符b3 = b && b2;printf("b3 = %d\n", b3); // 逻辑与:全真即真b3 = b1 || b2;printf("b3 = %d\n", b3); // 逻辑或:有真则真b3 = !b3;printf("b3 = %d\n", b3); // 逻辑非// 位运算符 转换成二进制数,进行左移右移,取反,异或等操作,常用于嵌入式设备中,控制某个状态的迁移s = s << 1;printf("s = %d\n", s);s = s << 2;printf("s = %d\n", s);s = s >> 3;printf("s = %d\n", s);// 条件运算符, 条件成立,输出 l >i 否则输出 l < il > i ? printf("l > i\n"):printf("l < i\n");return 0;
}
六、流程控制
流程控制相当于程序执行的执行路径, 执行流程均可嵌套,建议,不要嵌套层数,不要超过三层,否则会影响代码的执行效率。
1、分支控制
1.1、if 语句
1.2、switch case
2、循环控制
2.1、for
2.2、while
2.3 、do while
cContrl.c
#include <stdio.h>
#include <stdbool.h> // 引入bool类型void main()
{int i = 4;int j = 8;if(i < j){// i < j 条件成立执行括号内代码i += j;printf("i < j , i = %d, j = %d\n", i, j);}if(i < j){i = j-i;printf("1 i < j , i = %d, j = %d\n", i, j);}else {++i;printf("i > j , i = %d, j = %d\n", i, j);}if(i < j){i = j-i;printf("2 i < j , i = %d, j = %d\n", i, j);}else if(i == 13){++i;printf("i = %d, j = %d\n", i, j);}else{printf("i > j , i = %d, j = %d\n", i, j);}switch(j){// break的作用是跳出当前执行代码段case 1:{printf("j == 1");}break;case 2:{printf("j == 2");}break;case 8:{printf("j == 8");}break;default:break;}// 循环语句int sum = 0;for (int a = 1; a <= 5; a++) {sum += a;}printf("sum = %d\n", sum);int s = 1;int sum1 = 0;while (s <= 10) {sum1 += i;s++;}printf("1 到 10 的整数和为:%d\n", sum);int num = 20;do {if (num % 2 == 0) {printf("%d 是偶数。\n", num);} else {printf("%d 不是偶数。\n", num);}num--;} while (num > 0);return ;
}
代码运行输出: