C语言救赎之路,有些鸟儿是困不住的!(其4) (逻辑运算符+函数)

        什么是运算符?诶~,其实我们一直在用运算符,比如我们的 +,-,*,/ 等等都是运算符。今天我们就先来讲讲运算符。这是结合我自己的理解,我认为自己讲的肯定比一些教科书讲的要更清楚一些,我一般是用最少的字来解释这些东西,还是那句话,人民喜欢的艺术才是好艺术

逻辑运算符

首先我们要知道,运算符其实还可以细分,分为很多种类。

但是我在这只讲逻辑运算符,和它跟着的关系运算符。因为我认为这是最重要的一种运算符,像+,-,*,/不需要我讲都知道是算数运算符,'='这种符号是赋值运算,但是像什么三目运算符,左移运算符.....等等又需要更深入的讲,而且大部分也不怎么常用。如果想知道这些,建议去看视频理解。

首先我们要知道||这是逻辑或,&&是逻辑与。

讲逻辑运算我们先讲关系运算>   <    == 这三个

关系运算

我们直接举例子

注意我们判断相等是用   ==

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>


int main()
{
	int a = 10 == 10;//因为10==10条件为真所以赋值为1
	int b = 10 > 20; //因为10>20条件为假为假所以赋值为0;
	int c = 10 < 20; //因为10<20条件为真,所以赋值为1
	printf("%d %d %d ", a, b, c);打印101
	return 0;
}

运行代码:

还要注意一点:满足判断我们一般叫做真,一般值为1。不满足叫做假,一般值为0。

||逻辑或

其实在符号两边会放判断。我们直接举个列子

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>


int main()
{
	int a = 0;
	scanf("%d", &a);//等待输入一个数字
	if (a > 10 || a < 5)  如果一个数字大于10,或者小于5都可以被打印
	{
		printf("%d", a);
	}
	return 0;
}

我么输入11试一试:

&&逻辑与

我们还是用刚才的那个例子,把或改为与试试:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>


int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a > 10 && a < 5)//a数字他是既要大于10又要小于5才能被打印,想想有这个数字吗?
	{
		printf("%d", a);
	}
	return 0;
}

所以不用试都知道没有这个数字。

总结:

我们知道了吧!||是只要其中一个满足就进入,&&是必须两个都满足才进入。

说着只讲逻辑运算符,其实已经讲了好几种运算符了。



含数:

在C语言的函数并不像数学那样的函数,C语言的函数更像是种工具。

我们先浅浅讲一下数组

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//在C语言像这样的就是对一个数组的初始化
//[10]表示有10个数字,arr是数组的名字,
//用{}这种括号讲值括起来
//每个值用,号隔开

我们对一个数组打印的化我们一般这样做

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	for (int i = 0; i < 10; i++)//数组下标从0开始,将i初始化为0。
	{
		printf("%d ", arr[i]);访问每个值需要数组名(这里的数组名是arr),加上解引用[],[i]就是我们想
	}                                                             //访问的第几个数字
	return 0;
}

现在我们不要问为什么要这么做,只需要知道这么做就行了

运行:

这时候我们想一想假如我们有10个数组都需要打印呢?每个数组都这么敲吗?这时候我们的函数就起作用了。

我们来看一个打印函数的实现

void PrintArr(int arr[], int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
}

我们用一张图片来理解

arr就是我们传入的数组,n就是我们要出入数组的长度。

我们来看这个代码:

void PrintArr(int arr[], int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
}


int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int arr1[5] = { 1,2,3,4,5 };
	PrintArr(arr, 10);//打印arr
	printf("\n");
	PrintArr(arr1, 5);//打印arr1
	return 0;
}

我们运行:

我们就打印arr和arr1了。

我想你已经了解了函数的一部分功能了,可减少我们重复的代码,减少我们的代码量。函数就像个工具一样,想必你也知道为什么了。


细节:

我们粗略讲了讲函数,但是我认为还有几个细节的点。

int Func(int x,int y)//返回类型为int,传入两个int类型的值x,y
{
	x = 10;将x赋值为10
	y = 20;将y赋值为20
	return x + y;
}

int main()
{
	int x = 1;
	int y = 2;

	int c=Func(x, y);//c来接收返回值,传入x,y。
	printf("%d %d %d",x,y,c);
	return 0;
}

我们看看这个代码,最后们打印什么呢?

结果是1,2,30,为什么呢我们不是把x赋值为10,y赋值为20了吗?

其实不然,我们要了解一个东西:实参和形参的关系

记住:我们每次调用函数,传入的是实参,函数接受的是形参。形参是实参的临时拷贝,形参的改变不会改变实参,只有解引用形参才会改变实参。

在这个函数x,y就是形参,不会改变实参x,y的值。这里是个特殊例子,形参和实参的名字都一样。

我这样解释为什么能一样:因为Func是一个新的函数,main函数里的x,y与Func x,y不相同,一个函数里不能存在相同的变量名,如果想深入理解,请去看看函数栈帧的视频。

为什么又说解引用能改变值呢?这里我们先不讲,因为牵扯到指针的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合Xxl-Job

一、下载Xxl-Job源代码并导入本地并运行 Github地址:GitHub - xuxueli/xxl-job: A distributed task scheduling framework.&#xff08;分布式任务调度平台XXL-JOB&#xff09; 中文文档地址:分布式任务调度平台XXL-JOB 1.使用Idea或Eclipse导入 2.执行sql脚本(红色标记…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服…

动态规划课堂6-----回文串问题

目录 引言&#xff1a; 例题1&#xff1a;回文子串 例题2&#xff1a;回文串分割IV 例题3&#xff1a;分割回文串II 例题4&#xff1a;最长回文子序列 例题5&#xff1a;让字符串成为回文串的最小插入次数 引言&#xff1a; 回文字符串 是正着读和倒过来读一样的字符串。…

LeetCode 面试经典150题 80.删除有序数组中的重复项II

题目&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…

PTA——1075 链表元素分类、1105 链表合并、1110 区块反转

1075 链表元素分类 解决代码 #include<bits/stdc.h> using namespace std; struct node{int v;int next; }; map<int,node> s; vector<vector<pair<int,int>>> ans(3); vector<pair<int,int>> w; int main(){int st,n,k;cin>>…

鸿蒙Harmony应用开发—ArkTS-转场动画(组件内转场)

组件内转场主要通过transition属性配置转场参数&#xff0c;在组件插入和删除时显示过渡动效&#xff0c;主要用于容器组件中的子组件插入和删除时&#xff0c;提升用户体验。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记…

短视频矩阵系统技术交付

短视频矩阵系统技术交付&#xff0c;短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说&#xff0c;目前基本上已经沉淀3年了&#xff0c;那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后&#xff0c;很多违规的技术开发肯定有筛选到了…

cuda多版本安装

主要参考文章&#xff1a; ubuntu 20.04下多版本cuda&cudnn下载与安装 在ubuntu上安装多个版本的CUDA&#xff0c;并且可以随时切换 1 环境检查 nvidia-smiCUDA Version:12.4表示最高支持cuda 12.4版本 nvcc -V如图所示表示系统目前版本为cuda 12.2 2 多版本cuda下载与…

深入解析Kafka中的动态更新模式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入解析Kafka中的动态更新模式 前言动态更新模式的基础概念动态更新模式的概念&#xff1a;解决的问题和引入的原因&#xff1a; 原理解析与工作流程动态更新模式的工作原理和工作流程&#xff1a;示…

【MySQL】学习和总结使用列子查询查询员工工资信息

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Spring-IOC容器注解方式整合三层架构

注解方式特点 //1. 完全注解方式指的是去掉xml文件&#xff0c;使用配置类 注解实现 //2. xml文件替换成使用Configuration注解标记的类 //3. 标记IoC注解&#xff1a;Component,Service,Controller,Repository //4. 标记DI注解&#xff1a;Autowired Qualifier Resource Va…

基于肤色模型(YCbCr模型)的人面定位统计算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

计算机视觉之三维重建(2)---摄像机标定

文章目录 一、回顾线代1.1 线性方程组的解1.2 齐次线性方程组的解 二、透镜摄像机的标定2.1 标定过程2.2 提取摄像机参数2.3 参数总结 三、径向畸变的摄像机标定3.1 建模3.2 求解 四、变换4.1 2D平面上的欧式变换4.2 2D平面上的相似变换和仿射变换4.3 2D平面上的透射变换4.4 3D…

音视频开发_SDL跨平台多媒体开发库实战

SDL&#xff08;Simple DirectMedia Layer&#xff09;是一个非常流行和强大的跨平台开发库&#xff0c;它主要被用来开发视频游戏和实时多媒体应用程序。它提供了一系列的功能来处理视频、音频、键盘、鼠标、操纵杆、图形硬件加速以及聚焦3D硬件的各种功能。SDL的API通过C编程…

串行通信协议 SPI

SPI&#xff08;Serial Peripheral Interface&#xff09;是一种串行通信协议&#xff0c;常用于连接微控制器、存储器、传感器和其他外围设备。SPI通常由一个主设备&#xff08;通常是微控制器&#xff09;和一个或多个从设备组成。 1、SPI通信一般由四根线组成: SCLK&#x…

Java学习笔记20——枚举类型的创建与使用

在实际编程中&#xff0c;存在着这样的“数据集”&#xff0c;它们的数值在程序中是稳定的并且个数是有限的。例如春、夏、秋、冬四个数据元素组成了四季的“数据集”&#xff0c;一月到十二月组成了十二个月份的“数据集”&#xff0c;周一到周五及周六周日组成了每周七天的“…

无论是自学还是培训,找工作都要有舍我其谁的信心

不要说自己不行&#xff0c;要说自己可以&#xff0c;做的很不错。 我在投简历的时候&#xff0c;没有包装&#xff0c;然后在与hr沟通的时候&#xff0c;就会遇到 hr问技术能力如何这样的相关问题&#xff0c;其实我觉得我自己不够自信&#xff0c;想要获得一个offer。必须先…

25 OpenCV模板匹配算法

文章目录 介绍匹配算法介绍matchTemplate 模板匹配算子minMaxLoc 找出图像中的最大值最小值代码示例 介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 所以模板匹配首先需要一个模板图像T&#xff08;给定的子图像&#xff09; 另外需要一个待检测的图像-源图…

必看!想入行嵌入式该准备些什么?

近日&#xff0c;很多人问华妹&#xff1a;想入行嵌入式该怎么准备。很能理解大家对于嵌入式的关注&#xff0c;嵌入式系统是当今科技领域中的重要组成部分&#xff0c;它存在于我们生活的方方面面&#xff0c;各行各业。智能化时代的到来也让嵌入式技术炙手可热&#xff01; …

高通平台初步

网上找的图&#xff0c;大体差不多&#xff0c;但是有些细节有点奇怪。 上面的图有点小怪&#xff0c;主要是Libraies&#xff0c;Framework&#xff0c;App&#xff0c;这部分感觉应该是Google的。其他的没啥问题。 大概整理一下编译流程吧。 首先是安装环境&#xff0c;一些…