【C语言基础】1、分别与轮回:C语言的分支循环语句(一)

文章目录

🧠思维导图

📒前言

一、🔍语法结构

二、🔍操作符与运算符

1、概念

2、关系操作符

3、条件操作符

4、逻辑运算符

4.1、逻辑取反运算符

4.2、与运算符

4.3、或运算符

4.4、短路

📝总结


🧠思维导图


📒前言

C语言的语法结构就如同人的思维历程,熟知语法结构是每一个C语言初学者的必修课。一旦学会了语法结构,你会发现写代码更流畅了,逻辑更清晰了,甚至以往一筹莫展的题也有了新的思路,说到这里,是不是有很多老铁已经开始期待了?

那就马上打开编译器,创建新项目,我们马上出发!


一、🔍语法结构

C语⾔是结构化的程序设计语⾔,这里的结构指的是顺序结构、选择结构、循环结构

为了帮助大家理解三种结构的概念,我们可以把一个程序比作一条奔腾的河流,那么就可以将以上三种结构类比为河流奔腾的三种不同方式:

顺序结构是河流直流而下,一去不复返,走到尽头的。

选择结构是河流在中途各奔东西,变为了几条走向不同的支流,奔向不同的终点。

循环结构是河流奔腾入海后又随着大气环流回到起点,如此不停循环往复,直到循环中止。

由于顺序结构较易理解并且结构清晰,本篇只会介绍较为复杂的选择结构和循环结构。

我们可以使⽤ if, switch实现选择(分支)结构,使⽤for, while, do while实现循环结构

但是在了解两种结构之前,我们必须明白它们的判断条件,那么我们在本章内容就要先了解几种常用的操作符运算符

二、🔍操作符与运算符

1、概念

  1. 操作符是嵌在每一条指令中的,换句话说,指令系统的每一条指令都有一个操作符。我理解是计算机系统中的术语。 如=(赋值),==(判断相当)等等。

  2. 运算符是数学中的术语。主要是指数之间的运算方式。如 + - * / %,但不包括 = (赋值)这样的操作符

操作符主要分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用函数调用和结构成员操作符等。

运算符主要分为算术运算符(+、-、*、/、%)、关系运算符(> < >= <= == != )、逻辑运算符(&& , || , !)、赋值运算符(=和复合赋值)、条件运算符(三目运算符)、逗号运算符、指针运算符、求字节运算符、强制类型转换运算符、分量运算符、下标运算符等。

作为初学者,本章我们只需掌握关系操作符、条件操作符、逻辑操作符。

2、关系操作符

C 语言用于比较的表达式,称为 “关系表达式”,里面使用的运算符就称 为“关系运算符”,主要有下⾯6个。

• > ⼤于运算符 

• < ⼩于运算符

• >= ⼤于等于运算符

• <= ⼩于等于运算符

• == 相等运算符(注意:“=”表示赋值,“==”表示相等)

• != 不相等运算符

关系表达式返回值通常为 1 或 0 ,分别表示真和假

例如以下代码:

#include <stdio.h>
int main()
{
printf("%d",1+1>=2);
return 0;
}

在编译器上运行后我们会发现打印1表示“1+1==2”为真。当然,如果把表达式换为“作者很帅”也会返回同样的值。

当然,如果我们把代码替换为:

#include <stdio.h>
int main()
{
printf("%d",1+1>2);
return 0;
}

如果抛开某些哲学角度上的分析,则会发现打印结果为0,表示表达式为假。

在使用关系操作符的时候,应特别注意:关系操作符不宜连用。例如在中学阶段我们常使用“1<x<2”的表示方法表示x的范围。但在C语言中,这种写法是不妥当的,应当改为“x>1&&x<2"("&&"是逻辑操作符,表示“并且”,在“逻辑操作符”一节中会讲到)

举个栗子:

#include <stdio.h>
int main()
{
	printf("%d", 1 < 3 <2);
	return 0;
}

在编译器上运行后我们会发现返回值为1,表示表达式是正确的,这显然与事实不符。

应将代码改为:

#include <stdio.h>
int main()
{
	printf("%d", 1 <3 && 3 < 2 );
	return 0;
}

此时返回值变为0,表示假。

3、条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:

exp1 ? exp2 : exp3

它包含的逻辑是:判断表达式exp1,若正确,则计算表达式exp2并输出结果;若错误,则计算表达式exp3并输出结果。

举个栗子:

#include <stdio.h>
int main()
{
printf("%d", 2 > 3 ? 1+1 : 2+2);
return 0 ;
}

运行后发现打印结果为4。因为计算机判断表达式“2>3”显然不成立,则执行是表达式“2+2”。

4、逻辑运算符

在“关系运算符”一节内容中,我们提及过表示“并且”的逻辑运算符“&&”。在本节内容中,我们将更深入了解逻辑运算符。

在形式逻辑中,逻辑运算符或逻辑联结词把语句连接成更复杂的复杂语句。逻辑运算符用来表示日常交流中的“并且”,“或者”,“除非”等思想。

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:

• ! :逻辑取反运算符(改变单个表达式的真假)。

• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

• || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

4.1、逻辑取反运算符

逻辑取反运算符可以简单理解为改变变量的真假性

#include <stdio.h>
int main()
{
	int zuozhehaoshuai = 0;
	if (!zuozhehaoshuai)
	{
		printf("我要变帅\n");
	}
	return 0;
}

如果“作者好帅”为真, “!作者好帅”就是假,如果“作者好帅”为假,“!作者好帅”就是真,所以上⾯的代码的意思若“作者好帅”为假,执行if语句中的代码,输出“我要变帅”(由于C语言中变量名由字母、数字、下划线组成,并且不能以数字开头,所以这里用拼音表示)

4.2、与运算符

&& 就是与运算符,也是并且的意思, && 是⼀个双目操作符,使用的方式是 a&&b , && 两边的表达 式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

可以类比于高中数学教材中“p∧q”,表示“且”。

举个栗子:

#include <stdio.h>
int main()
{
int IQ = 0;
scanf("%d", &IQ);
if(IQ >= 100 && IQ <= 150)
{
 printf("有点聪明\n");
}
return 0;
}

当我们输入120时,则会打印结果“有点聪明”。这是因为120同时满足“>=100”和“<=150”两个条件。

若我们输入180时,则不会打印结果,因为计算机也知道IQ=180不只是“有点聪明”那么简单了。

4.3、或运算符

|| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,整个表达式才为假。

可以类比于高中数学教材中“pvq”,表示“或”。

举个栗子,我们可以改写一下上一个例子的代码:

#include <stdio.h>
int main()
{
	int IQ = 0;
	scanf("%d", &IQ);
	if (IQ <= 0 || IQ >= 250)
	{
		printf("智商已超出正常人范围\n");
	}
	return 0;
}

当我们输入300时,则会打印结果“智商已超出正常人范围”。这是因为300满足“>=250”一个条件则表达式为真。

4.4、短路

当然,对于C语言,它的顺序是从左向右计算,如果左边的表达式满足逻辑运算符的条件,就不再计算右边的表达式,于是便有了类似于电路中的“短路”现象。

在运用“与运算符”“&&”时,若有从左向右一旦有表达式为假(返回值为0),就不再执行后续表达式。

在运用“或运算符”“||”时,若有从左向右一旦有表达式为真(返回值为非0),就不再执行后续表达式。

举个栗子:

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if(age <= 12 && age >= 6)
	printf("太好了!儿童节可以放假!\n");
	return 0;
}

当我们输入18时,未显示打印结果,这是因为计算机判断“age<=12”时,就已经判断表达式为假,不再执行后续表达式。


📝总结

本篇内容我们初步了解了C语言的三种结构,并且深入了解了操作符与运算符。

可以说操作符与运算符就像钟表里的小齿轮,虽然表述简单但对整个程序的运行都起到了至关重要的作用。其实我们的生活也是由这一个个操作符构成的,例如事情的正确与否,人的兼收并蓄等等,当我们的大脑在凭借逻辑进行判断时,也用到了这一个个操作符。

下一篇内容我们将深入讲解使用 if, switch语句来实现选择(分支)结构。

由于作者时间有限,每篇内容也需花费较多时间撰写,后续内容将不定期更新,记得关注哦~

如果发现文章中表述存在错误或有疑问,欢迎私信作者或者在评论区留言~

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hunter乔乔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值