学习:黑马程序员视频

黑马程序员C语言零基础入门到精通全套视频教程

C语言简介

C语言:1978年1月1日美国贝尔实验室推出的一门非常哇塞计算机语言

计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言

C语言之父:丹尼斯·里奇

C语言能做什么:操作系统、驱动开发、引擎开发、游戏开发、嵌入式开发等

https://pan.baidu.com/s/1jKcbFZ933WFDnhM9OgvIDQ?pwd=c19f
提取码:c19f

hello word

标准的输入输出StandardInputandoutput

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>//预处理,程序在运行之前,需要提前做的事情

int main()//主入口
{
//输出语句,小括号里面是输出内容
printf("Hello World!");
/*return:程序结束了
0:程序是正常结束
这里的0,需要跟上面的int呼应起来*/
return 0;
}

C语言完整的执行流程分析

编写:.c
编译:把操作系统看不懂的内容翻译成0和1 .obj

链接/连接: `.obj` .h组合起来成为.exe(可执行文件)

运行:.exe文件

注释

单行注释://

多行注释:/*…*/

注释快捷键:ctrl+K,Ctrl+C Ctrl+/
取消快捷键:ctrl+K,Ctrl+U Ctrl+/

注释擦除:注释的内容,不参与运行

注释的嵌套:最好不要嵌套

关键字

关键字:被C语言赋予了特定涵义的英文单词

关键字的特点:
关键字的字母全部小写
常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观

常量

常量类型 说明 举例
整型常量 正数、负数、0 36,78(计算展示)
实型常量 所有带小数点的数字 89.9,78.0
字符常量 单引号引起来的字母、数字、英文符号(只能写一个) ‘a’,’h’,’1′,’ ‘
字符串常量 双引号引起来(想写什么写什么) “你好”,”gy”,”123″(展示),””

常量:在程序的执行过程中,其值不能发生改变的数据

''语法错误

扩展1:实型常量小数点前后为0,可以省略
扩展2:科学计数法是实型常量,但是要写E

输出常量

printf(参数1,参数2);输出语句

参数1必填:输出内容的最终样式以字符串的形式体现
参数2选填:填补的内容

格式控制符 说明
整型 %d
实型 %f
字符 %c
字符串 %s

换行输出

操作系统 换行符
windows \r: 回到行首 \n: 到下一行
mac \r
Linux \n

变量

相当于一个盒子

先定义后赋值

数据类型 变量名;
int a;

数据类型 :为盒子中存储的数据,加入类型【限制】整数?小数?…

变量名:为盒子起的名字
分号:语句的结束

变量的注意事项

只能存一个值

变量名不允许重复定义
一条语句可以定义多个变量
变量在使用之前一定要进行赋值
变量的作用域范围

计算机的存储规则

在计算机中,任意数据都是以二进制的形式来存储的

三原色小结
计算机中的颜色采用光学三原色
分别为:红绿蓝,也叫RGB
可以写成十进制形式。(255,255,255)

进制在代码中怎么书写?

二进制:由0和1组成,代码中以0b开头
十进制:由0~9组成,前面不加任何前缀
八进制:由0~7组成,代码中以0开头
十六进制:由0~9还有a~f组成,代码中以0x开头

任意进制转十进制小结

公式:系数*基数的权次幂 相加
系数:就是每一位上的数
基数:当前进制数权 :从右往左,依次为012345……

十进制转任意进制小结

除基取余法
不断的除以基数(几进制,基数就是几)得到余数直到商为0,再将余数倒着拼起来即可

数据类型

C语言中的数据类型的作用

作用1:变量中能存储什么类型的数据
作用2:存储空间的大小

字节

1024字节=1KB
1024KB =1MB
1024MB =1GB
1024GB=1TB

整数

整数的数据类型分为:short、int、long、long long
不同的数据类型所表示范围和内存大小都不一样,由编译器来决定的,可以用sizeof来确定会遵守一个原则:short<=int<=long <= long long

long c=数字+L printf("%ld\n",c);

long long c=数字+LL printf("%lld\n",c);

利用sizeof测量每一种数据类型占用多少字节

sizeof(变量名/数据类型) printf("%zu\n",sizeof(short));

signed有符号整数 正数 负数

unsigned 无符号整数 正数

小数

小数的数据类型分为:float、double
不同的数据类型所表示范围和内存大小都不一样,由编译器来决定的,可以用sizeof来确定float(4字节)double(8字节)
小数的取值范围比整数的要大
C语言中的小数默认double类型的
不可以和unsigned组合,unsigned只能跟整数类型组合

1
2
3
4
5
6
//float 单精度小数(精确度小数点后6位)windows占4个字节(38位)
float a=3.14F;
printf("%.2f\n",a);
//double 双精度小数(精确度小数点后15位)windows占8个字节 (308位)
double b=1.78;
printf("%.2lf\n",b);

字符

char %c 取值范围ASCII码表中所有的内容 windows1个字节

标识符

标识符:代码中所有我们自己起的名字。
比如变量名、函数名等。

命名规则 —- 硬性要求
由数字、字母、下划线(_)组成

区分大小写
不能以数字开头
不能是关键字

命名规则 —- 软性建议
用英文单词,见名知意
变量名:全部小写
代码文件名:全部小写,单词之间用下划线隔开,开头可以用数字

键盘录入scanf

scanf,是scanner format的缩写,是C语言提供的一个数。必须有&取地址符

作用:获取用户在键盘上输入的数据,并赋值给变量

1
2
3
4
5
6
7
8
字符串变量的定义方式:
数据类型 变量名[大小]=字符串;
char str[内存占用大小]="aaa"
内存占用大小的计算方式:英文:1个字母,符号,数字占用一个字节
中文:在vs或者vc中,默认情况下,一个中文占用

两个字节
结束标记:1个字节

键盘录入多个数据

设置源文件右键属性

_CRT_SECURE_NO_WARNINGS加进去

1
2
3
4
5
6
7
8
9
10
11
12
#define _CRT_SECURE_NO_WARNINGS//或者加头文件
#include <stdio.h>
int main() {
int num1,num2;
// 从用户那里读取两个整数
printf("请输入两个数字: ");
scanf("%d %d", &num1, &num2);
//多个占位符空格分开,变量和占位符一一对应,取地址符一定不能落下!!!
// 计算并输出结果
printf("num1 + num2 = %d\n", num1 + num2);
return 0;
}

算数运算符

算术运算符 + – * / %(取余)
自增自减运算符 ++ —
赋值运算符 = += -= *= /= %=
关系运算符 == != > >= < >=
逻辑运算符 ! && \ \
三元运算符 a>b?a:b

1.整数计算,结果一定是整数

2.小数计算,结果一定是小数

3. 整数和小数计算,结果一定是小数

4. 小数直接参与运算,结果有可能不精确

5.除法不能除0

6.取余运算数据必须为整数

7.获取余数的正负,和第一个数字保持一致

8.取余不能除9

隐式转换

计算时,数据类型不一样不能直接运算,需要转成一样的,才能运算

把一个取值范围小的,转成取值范围大的

int转bool非0为true,0为flase

强制转换

如果把取值范围大的,赋值给取值范围小的,就需要进行强制转换
格式:目标数据类型 变量名=(目标数据类型)被强转的数据

取值范围:
char< short<int < long < long long < float< double

自增自减

++和—放在变量的前边或后边,单独写一行结果是一样的

1
2
3
4
5
int a = 10;int b= a++;
先用后加

int a= 10;int b= ++a;
先加后用

赋值运算符

符号 说明 举例
= 直接赋值 int a=10,将 10 赋值给 a
+= 加后赋值 a+=b,相当于 a=a+b
-= 减后赋值 a-=b,相当于 a=a-b
*= 乘后赋值 a=b,相当于 a=ab
/= 除后赋值 a/=b,相当于 a=a/b
%= 取余赋值 a%=b,相当于 a=a% b

关系运算符

符号 说明
== a==b 判断 a 是否等于 b
!= a!=b 判断 a 是否不等于 b
> a>b 判断 a 是否大于 b
>= a>=b 判断 a 是否大于等于 b
< a<b 判断 a 是否小于 b
<= a<=b 判断 a 是否小于等于 b

结果:成立 1 (真) 不成立 0 (假)

逻辑运算符

符号 作用 说明
&& 与 (而且) 具有短路效果 两边都为真,结果才是真
\ \ 或 (或者) 具有短路效果 两边都为假,结果才是假
非 (取反) 取反

短路效果 规则:当左边的表达式能确定整个表达式的结果了,右边不参与运算

&& 可以连续写多个的

多个&&,表示同时满足多个条件

多个,表示在多个条件当中,只要满足其中一个

三元运算符

格式:关系表达式?表达式1:表达式2;

计算规则
首先计算关系表达式的值

如果成立,表达式1的值就是运算结果

如果不成立,表达式2的值就是运算结果

逗号运算符

从左到右
最后一个子表达式的结果,是整个表达式的结果
优先级最低(永远是最后执行)

运算符优先级

小括号优先于所有
一元 >二元 >三元

一元:一个变量就可以使用的

二元:两个变量可以使用的

三元: ?:
&&>> 赋值

vs的解决方案资源管理器不小心删除

使用快捷键 Ctrl + Alt + L恢复