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

news2024/10/7 12:28:33

作者前言

 欢迎小可爱们前来借鉴我的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   (运用太少不介绍)

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树题目:二叉树的前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的前序遍历 出处&#xff1a;144. 二叉树的前序遍历 难度 3 级 题目…

k8s master组件无法重启

1.案例 k8s的master组件出错&#xff0c;删掉pod重新拉起也无法正常启动 kubectl get pod -n kube-system 可以看到controller和scheduler组件都显示异常 kubectl describe pod kube-apiserver-k8s-master03 -n kube-system 通过describe查看组件容器的详细信息也并没有报错…

SpringBoot接口加密解密工具

介绍&#xff08;项目源码见文末&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 在软件项目开发过程中&#xff0c;当需要对后端返回数据进行加密&#xff0c;或者前段向后端发送的数据时加密后的数据&#xff0c;那么在接收前就需要…

DuiLib了解xml的使用和布局

文章目录 1、了解 XML 使用和布局2、VerticalLayout和HorizontalLayout3、TabLayout4、TileLayout5、Container6、ChildLayout 1、了解 XML 使用和布局 本节主要介绍 DuiLib 中 XML 关键字的使用和一些特性&#xff0c;通过构建一个简单的带标题栏和简单结构的窗口&#xff0c…

GCC编译四步和LDS脚本

GCC编译四步 1、预处理&#xff1a;宏定义替换之类的工作 2、编译非汇编&#xff1a;将源代码经过词法分析、语法分析、语义分析转为汇编代码的过程 3、汇编&#xff1a;将汇编代码转为具体二进制机器码的过程&#xff08;此时由于还没有进行链接&#xff0c;所以虽然是二进…

Context Prior for Scene Segmentation--CVPR, 2020

Context Prior for Scene Segmentation–CVPR, 2020 文章目录 Context Prior for Scene Segmentation--CVPR, 2020一、背景介绍二、方法介绍1.A的生成2.Affinity Loss3.如何从 X X X获取P4.Y操作 一、背景介绍 问题&#xff1a;现阶段&#xff0c;不少语义分割方法所限于卷积结…

快速部署合同管理模板:低代码实现高效率

在现代商业环境中&#xff0c;合同管理是企业日常运营中至关重要的一环。合同是企业与外部实体之间约定的法律文件&#xff0c;合够帮助企业有效管理合同的全生命周期&#xff0c;包括合同创建、审批、签署、执行和归档&#xff0c;以提高合同管理的效率和准确性。 随着企业数…

软件测试面试题(大全)

1.B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xff0c;因…

【操作系统】操作系统最全的总结,5万字干货

文章目录 前言搞清楚几个问题 一、认识操作系统二、计算机硬件三、进程和线程1、进程2、进程模型3、进程的创建4、进程的终止5、进程的层次结构6、UNIX 进程体系7、Windows 进程体系8、进程状态9、进程的实现10、线程11、线程的使用12、经典的线程模型13、线程系统调用14、POSI…

Revit轴网问题:创建标高看不到原来的轴网和轴网转化

一、Revit中创建的标高看不见原先的轴网怎么解决 (1)在Revit中绘制的轴网会默认超过最高标高一定距离&#xff0c;若新绘制的标高会在这距离之上&#xff0c;进入新绘制的“标高3”平面会发现看不到(1至6号轴网)。 (2)进入东立面&#xff0c;拖动轴网往上移动即可。 进入南、北…

MySQL 读写分离代理(Mycat2)

作者&#xff1a;田逸 作者亲自尝试过的开源MySQL读写分离工具有Amoeba、MySQL Proxy、Mycat等&#xff0c;经过仔细测试对比&#xff0c;在某个实际项目中选用Mycat作为MySQL数据库读写分离的代理工具。Mycat当前的最新版本为Mycat2&#xff0c;可从http://dl.mycat.org.cn/2…

60、基于51单片机无线蓝牙温度上下限控制加热系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

摘 要 随着人们生活水平的提高&#xff0c;对生活环境的要求也越来越高&#xff0c;家用电器越来越趋向于自动控制控制乃至于智能控制&#xff0c;针对目前家庭的实际需要&#xff0c;自动控制水温报警系统比较方便实用&#xff0c;本文就通过51系列单片机来实现一种家用自动控…

VS2013 如何创建动态库和使用

创建动态库具体的步骤是&#xff1a;&#xff08;以DLL为例&#xff09; 1、创建一个win32项目 2、选择应用程序类型&#xff1a;DLL&#xff1b; 附加选项&#xff1a;导出符号&#xff0c;勾上&#xff1b; 3、点击完成&#xff0c;就会生成动态库 4、 由于是导出库&#xf…

[细读经典]Megatron论文和代码详细分析(1)

[细读经典]Megatron论文和代码详细分析(1) 导航&#xff1a; 迷途小书僮&#xff1a;[细读经典]Megatron论文和代码详细分析(2)102 赞同 41 评论文章正在上传…重新上传取消 前言 作为一款支持multi-node&#xff0c;multi-GPU的可以直接用来训练GPT3等世界上超大规模的自然…

【C++学习】VScode配置C/C++开发环境

VSCode是一个高级编辑器&#xff0c;只能用来写C/C/Python/Java等代码&#xff0c;不能直接编译这些代码。所以&#xff0c;我们需要搭建编译和调试环境&#xff0c;本文以C/C为例&#xff0c;使用MinGW-w64&#xff0c;将其移植到Windows平台的一个gcc编译器。下面具体介绍如何…

基于Java蜀都天香酒楼网站系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

第二章_基于redis实现分布式锁

基本实现 借助于redis中的命令setnx(key, value)&#xff0c;key不存在就新增&#xff0c;存在就什么都不做。同时有多个客户端发送setnx命令&#xff0c;只有一个客户端可以成功&#xff0c;返回1&#xff08;true&#xff09;&#xff1b;其他的客户端返回0&#xff08;false…

微信小程序WE分析----事件分析

目录 web分析-小程序 事件分析概述 1.新增事件管理 事件参数说明 (1) 填写事件配置 (2)小程序添加上报代码&#xff1a;将上报代码添加到小程序中 (3)测试事件数据上报&#xff1a;测试事件上报的数据是否正确。 属性管理 字典管理 新增事件分析 创建事件分析 添加事件指…

Java+Swing+mysql员工工资管理系统2.0

JavaSwingmysql员工工资管理系统2.0 一、系统介绍二、功能展示1.用户登陆2.主页3.员工工资查询4.员工工资添加5.员工工资修改6.员工工资删除 三、系统实现1.salary.java 四、其它系统五、获取源码 一、系统介绍 该系统实现了简单的增删查改、用户登陆、员工工资查询、员工工资…

美联储缩表意味着什么?

What does the Feds balance sheet reduction mean? 这里的表是资产负债表&#xff0c;Balance sheet. 美联储&#xff08;Federal Reserve&#xff09;作为全球影响力最大的央行&#xff0c;其在货币政策上做出的一些调整&#xff0c;可能就会引起全球经济和金融市场动荡&am…