C语言第三课-----------加油 加油 加油

作者前言

 欢迎小可爱们前来借鉴我的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 <stdio.h>
int main()
{
	int a;
    printf("%d", a);
	return 0;
}

结果

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

________________________________________________________________

数组

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

数组的定义

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

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

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

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
int main()
{
	int a = 10;
	int b = 3;
	printf("a除b取模的值为:%d", a % b);
	return 0;
}

结果:

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

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

>> <<

后期会讲

位操作符(二进制操作)
& ^ |
后期会讲
赋值操作符
+=    -=   *=   /=   &=   ^ =    |=      >>=     <<=
下面我来讲一讲 +=
代码1:
#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	a = a + b;
	printf("%d",a);
	return 0;
}

代码二:

#include <stdio.h>
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 <stdio.h>
int main()
{
	int a = 2;
	int b = 0;
	printf("%d\n", !a);
	printf("%d\n", !b);
	return 0;
}

结果:

使用!时要清楚,为假是默认为0,为真时是默认为1
-和+,sizeof,~我就不讲了后期讲
我来讲讲++
有前置++,先加1,再使用
代码如下
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
int main()
{
	int a = (int)1.000;
	printf("%d", a);
	return 0;
}

结果:

 注意,这个不能随便使用

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

&&相当与数学的逻辑且 

||相当于数学的逻辑或

下面代码演示:

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

结果:

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

exp1>exp2?exp1:exp1 意思是exp1大于exp2吗,大于就返回exp1,否则返回exp2

代码如下:

#include <stdio.h>
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 <stdio.h>
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   break   case   char   const   continue   default   do   double else   enum  
extern float   for   goto   if   int   long   register     return   short   signed              
sizeof   static struct   switch   typedef union   unsigned   void   volatile   while    

我们就先讲讲这些意思

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

break 让循环停止

switch()

{ case:语句

 default:语句

}

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

do.....while()

extern 声明外来变量 ,函数等

goto  一种语句

register  寄存器

signed 有符号

unsigned 无符号

static 创建静态变量

struct 结构体

typedef  类型重定义

union 联合体

volatile   (运用太少不介绍)

总结

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

猜你喜欢

转载自blog.csdn.net/m0_69984273/article/details/131217700