☰
C语言基础到数组的感知
2026/10/2 7:07:08 网站建设 项目流程

C语言的类型

基础

sizeof是一个运算符 格式=sizeof(类型名称 列如int i等)

sizeof是一个静止的运算符 不能在括号中间进行运算

不同类型的字节大小 char=1;short=2;int=4;float=4;double=8,long=4。

long long=8,long double=8;

\\一个字节=8比特;

//整数的输入与输出

unsigned可以移位,将负数除去,扩大正数

int long long

. %d:int

.%ld:long long

.%u:unsigned

%lu:unsigned long long

\\整数的选择:如果没特别的要求一般都用int

//浮点数类型

float,4个字节,有效数字为7;32个字长.

double,8个字节,有效数字15;字长64.

\\浮点数的输入与输出

float scanf %f printf %f,%e

double scanf %lf printf %f,%e

\\科学计数法

列 10000 为1e4; -1200为-1.2e3; 0.0012为1.2e-3

\\输出精度

在%和f之间加上.n可以保留n位小数,为四舍五入.

\\浮点运算的精度

带小数点的字面量是double,float需要用f/F来表示身份.

//由于浮点数有误差,所以f1==f2可能会失败

//解决方法

\\fabs 浮点数求绝对值 fabs(-a)=a

\\abs 整数求绝对值abs(-a)=a{不能拿来求解浮点数}

故当fabs(f1-f2)<1e-10一定精度时可满足,一般为1e-8;

double的为1e-18;

\\选择浮点类型

一般都用double.

\\字符类型

char 是一种整数,也是一种字符

用单引号表示字符的字面量:'a', '1'。

' ' 也是一种字符

printf和scanf里有%c;来表示输入和输出字符。

\\字符的输入与输出

scanf(“%c”,&c)

printf(“%c”,c)

\\特殊的情况

//scanf为%d时不能处理char,所以要赋值char给int。

int c;

char i=‘1’

c=i

scanf("%d",&c)

\\字符的计算

一个字符加上一个数字得到ASCLL码表那个数之后的字符;相减得到两字符之间的距离,可用来转化大小写字母。

\\逃逸字符

定义:无法打印的字符

字符

意义

字符

意义

\b

回退一格

\"

双引号

\t

到下一个表格位

\'

单引号

\n

换行

\\

反斜杠本身

\r

回车

\\类型转换

//自动类型转换

自动向大范围的转换

char<short<int<long<long long

int<float<double

\\scanf不会自动转换,printf会,故scanf需要%hd

\\强制类型转换(一般为大到小转换)

(类型)值

(int)10.2

注意小的类型不一定能包含大的值所以需要注意

//强制类型的优先级高于四则运算

\\逻辑类型
使用条件:#include<stdbool.h>
定义条件之后可以使用bool和true;false
\\逻辑运算
结果只有0和1 0是false 1是ture

运算符

描述

示例

!

非

!a

&&

与

a&&b

||

或

a||b


//单目的运算符高于双目的运算符
优先级 !>&&>||

优先级

运算符

结合性

1

()

从左到右

2

! + - ++ --

从右到左(这里的+ -为+1 -1这种)

3

% * /

从左到右

4

+ -

从左到右

5

<= < > >=

从左到右

6

== !=

从左到右

7

&&

从左到右

8

||

从左到右

9

= += -= *= /= %=

从右到左


\\短路
双目会短路,单目不会
&& 且· 一错全错
|| 或 一对全对
\\条件运算
列 count=(count>20)? count-10 : count+10;
可嵌套 优先级在赋值前1个
\\逗号运算
优先级最低 自己找感觉。

函数

\\什么是函数? 接收零个或多个参数做一件事然后返回零个或一个值

\\定义:由函数头,函数名,函数体,返回类型,参数表组成。

eg:void sum(int a,int b)

{int i;

int sum=0;

`````

}

\\函数头:由返回类型,函数名,参数表组成。

\\返回类型 列如void

\\函数名 列如sum

\\参数表 为括号里的内容

\\函数体 为{}里的内容

!!!()起到了调用的作用

\\从函数中返回值

return停止函数执行并返回一个值

(1 return; 2 return 表达式)

省流 eg:

当c=max(a,b);时就需要将函数值返回给c所以需要return 表达式

但不需要返回时可以使用return;且返回类型void

\\函数的书写

一般写在int main()之后,但此时程序错误,故需要在前面加上(函数的原型)

函数原型:函数头以分号结尾可构成。

c语言会自动转换类型在调用函数时,从而使结果被吞掉。

变量的生存期和作用域:了解一下即可

没有参数时void swap(void) 当为void swap()时编译器会猜。

函数定义不能嵌套

int main()也是一个函数 return 0;有人看,用来报错。

int fun()与int fun(void)的区别

前者可以编译但()里的会被丢弃

后者()里不能有代码不然会报错

数组

介绍:数组相当于一个容器,用来存放数据。
定义:
1格式 <类型>变量名称[元素数量];
2组成 类型 名称 元素数量(必须为整数)
c99之后元素数量可以为变量,但确定一次之后就不能改变了
特点:所有类型都是相同的数据类型;
一旦被创建就无法被改变
数组元素在内存中是连续依此排列的
数组的单位
[]中的数字叫做下标 从0开始数
有效下标的范围
当超出范围时会报错
int a[0];可以存在但没有作用。
\\数组的运算过程
确定数组的大小
定义数组
初始化数组 for遍历或int count[num]={0};
数组参与运算
遍历数组输出
\\const代表着不能修改
\\数组的集成初始化 eg: int a[]={2,3,4,23,45,1,}
集成初始化的定位
eg:int a[10]={[0]=2,[4]=5,9,3,2,}
用[n]在初始化数据中给出定位
没有定位的数据接在前面的位置后面
其他位置的值补零
也可以不给出数组大小,让编程器算
特别适合初始数据稀疏的数组
数组的大小
sizeof(数组)可求出数组的大小
sizeof(a[0])可求出一个位置的大小
故数组的长度=sizeof(a[])/sizeof(a[0]);
数组的赋值
有且只有遍历
数组作为函数的参数时,不能在[]中给出数组的大小
不能再用sizeof来计算数组的元素个数了
当数组作为函数参数时,往往必须在用另一个参数来传入数组的大小
二维数组
int a[3][5]理解为三行五列的矩阵
二维数组的遍历需要两个for循环遍历
二维数组的初始化
列必须给出来,行数可以由编译器来数
每行一个{},逗号分隔
最后的逗号可以存在,有古老的传说
如果省略,表示补零
也可以用定位

若有收获,就点个赞吧

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询