作者前言

欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) – Gitee.com

目录

数组

操作符

常见关键字

________________________________________

紧接上一课,上一篇博客我已经简单介绍了变量的作用域和生命周期,常量,字符串+转义字符+注释,选择语句,循环语句,函数这些下面我们再接着来介绍C语言其他的

插播小知识

前面可能有些小可爱对scanf()有疑问,下面我们就来插播一下这个小知识

scanf

在图中可以看出,scanf是有返回值的,返回值是实际读取到数据的个数,比如我们要输入两个数字,结果我就输入了一个数字,那scanf()的返回值就是1,当我如果一个都不输入会返回多少,我们来试试

看看,是-1哦哦不要搞错了

‘\0’

数字0;0

字符0;’0′ 对应的ASCII值为48

转义字符0:’\0′ 对应的ASCII值为0 (十进制)是一个8进制的如:\ddd

全局变量和局部变量名字相同的情况下局部优先

变量初始化

未初始化

#include int main(){int a;printf("%d", a);return 0;}

结果

因为你未初始化,a会是随机值,编译器不支持这样所有会报错

________________________________________________________________

数组

简单的来讲就是一堆数据类型相同的数据组成的集合

数组的定义

#include int main(){//数组的定义int arr[10];char arr_1[10];double arr_2[10];float arr_3[10];return 0;}

数据类型 数组名[元素个数]

数组的初始化(就是赋值的过程)

#include int main(){//数组的初始化int arr[10] = {1,2,3,4,5,6,7,8,9,10};//完全初始化char arr_1[10] = {'a','b','c'};//不完全初始化double arr_2[10] = {0};float arr_3[10] = {1.0f,2.0f,3.0f};return 0;}

结果:

初始化分为完全初始化和不完全初始化,不完全初始化剩下的元素默认为0

这里我们简单了解一下

数组的下标

注意

数组的下标是从0开始的

我们可以通过下标访问元素或者修改元素

#include int main(){int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", arr[1]);arr[1] = 11;printf("%d\n", arr[1]);return 0;}

注意一下,就是数组的元素要是数字(整数 ,小数……)才能直接修改,如果是字符的话就不能直接修改了

如果我们想让一一打印出来也是可以的,

代码如下:

#include int main(){int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };/*printf("%d\n", arr[1]);arr[1] = 11;printf("%d\n", arr[1]);*/int a = 0;while (a < 10){printf("arr[%d]=%d\n", a, arr[a]);a++;}return 0;}

结果如下:

操作符

算术操作符

+(加) -(减) *(乘) /(除) %(取余) 下面我简单的讲解/和% / 代码如下:

#include int main(){int a = 10;int b = 3;float c = 3.0f;//整数的除法printf("a/b=%d\n", a / b);//小数的除法printf("a/c=%lf\n", a / c);return 0;}

结果:

除法有两种一种结果为小数,一种结果为整数

%

代码如下:

#include int main(){int a = 10;int b = 3;printf("a除b取模的值为:%d", a % b);return 0;}

结果:

记住,只有整数取余,没有小数

移位操作符(移动的是二进制)

>> <<

后期会讲

位操作符(二进制操作) &^| 后期会讲 赋值操作符 = +=-= *= /= &= ^ =|= >>=<<= 下面我来讲一讲 += 代码1:

#include int main(){int a = 10;int b = 20;a = a + b;printf("%d",a);return 0;}

代码二:

#include int main(){int a = 10;int b = 20;a += b;printf("%d",a);return 0;}

上面两种写法的运行结果都是一样的

a=a+b

a+=b ==> a=a+b

同理其他也是这个意思

单目操作符 !逻辑反操作 负值 +正值 &取地址 sizeof操作数的类型长度(以字节为单位) ~对一个数的二进制按位取反 前置、后置 ++前置、后置 ++ *间接访问操作符 ( 解引用操作符 ) ( 类型 ) 强制类型转换 所谓单目操作符就是只能操作一个操作数 前面的+是二目操作符 如a+ b 下面我们介绍!(真变假,假变真) 代码如下:

#include int main(){int a = 2;int b = 0;printf("%d\n", !a);printf("%d\n", !b);return 0;}

结果:

使用!时要清楚,为假是默认为0,为真时是默认为1 -和+,sizeof,~我就不讲了后期讲 我来讲讲++ 有前置++,先加1,再使用 代码如下

#include int main(){int a = 10;int b = ++a;//==>a=a+1;b=a;printf("a=%d\n", a);printf("b=%d\n", b);return 0;}

结果:

后置++,先使用,再加1

代码如下:

include int main(){int a = 10;int b = a++;//==>a=a+1;b=a;printf("a=%d\n", a);printf("b=%d\n", b);return 0;}

结果:

前置–就是先减1再使用

后置–就是先使用,再减1

这里我就不代码演示了

下面我们来讲讲()类型强制转换

代码如下:

#include int main(){int a = (int)1.000;printf("%d", a);return 0;}

结果:

注意,这个不能随便使用

关系操作符 > >= < <= != 用于测试不相等== 用于测试相等逻辑操作符 && 逻辑与 ||逻辑或 如图:
(0为假,1为真)

&&相当与数学的逻辑且

||相当于数学的逻辑或

下面代码演示:

#include int main()//给定一个数字,判断是偶数且小于10{int a = 2;if (a % 2==0 && a < 10){printf("%d满足", a);}return 0;}

结果:

条件操作符(三目操作符)

exp1>exp2″ />#include int main(){int a = 5;int b = 6;int c = (a > b ? a : b);printf(“%d”, c);return 0;}

结果:

相当于一个判断语句if….else,,,

逗号表达式

(exp1,exp2,exp3…expn) 从左到右运算,返回结果为最后一个expn

代码如下:

#include int main(){int a = 10;int b = 11;int c = 12;int d = (a += b, a -= b,b += c, b -= a);printf("%d", d);return 0;}

结果:

下标引用、函数调用和结构成员 [] () . -> 这里我就不代码演示了, ,->后面我会讲解

常见关键字

auto breakcase char constcontinue default dodouble else enum extern float forgoto ifintlong registerreturnshort signedsizeofstatic struct switch typedef union unsignedvoid volatile while

我们就先讲讲这些意思

auto 自动,只适用于修饰局部变量,让局部变量自动创建和自动销毁,大多数编译器省略了

break 让循环停止

switch()

{ case:语句

default:语句

}

cotinue:继续, 直接跳过开始下一次循环

do…..while()

extern 声明外来变量 ,函数等

goto 一种语句

register 寄存器

signed 有符号

unsigned 无符号

static 创建静态变量

struct 结构体

typedef 类型重定义

union 联合体

volatile (运用太少不介绍)

总结

以上就是我分享的内容,欢迎各位小可爱前来私信我