C语言 | 第五章 | 运算符-2

embedded/2024/10/21 7:45:07/

P 41 关系运算符及其使用 2022/8/27

一、基本介绍

  1. 关系运算符的结果要么是真(非0 表示),要么是 假(0 表示)
  2. 关系表达式 经常用在 if结构的条件中或循环结构的条件中

二、关系运算符一览表

image-20220827151138848

案例演示以以及相关截图:

#include<stdio.h>void main(){int a = 8;int b = 7;// 0 是FALSE,表示不成立;非0是TRUE,表示成立printf("\na>b=%d",a > b);  // 1 printf("\na>=b=%d",a >= b);  // 1printf("\na<b=%d",a < b);  // 0printf("\na<=b=%d",a <= b); // 0printf("\na==b=%d",a == b); // 0printf("\na!=b=%d",a != b); // 1getchar();
}

三、细节说明

  1. 关系运算符的结果要么是真(非0 表示, 默认使用1),要么是 假(0 表示)
  2. 关系运算符组成的表达式,我们称为关系表达式。 a > b
  3. 比较运算符 “==”(关系运算符),判断数据是否相等 不能误写成 “=” (赋值)

P 42 逻辑运算符应用案例 2022/8/27

一、基本介绍

用于连接多个条件(一般来讲就是关系表达式),最终的结果要么是真(非0 表示),要么是 假(0 表示)

二、逻辑运算符一览表

image-20220827162205512

三、案例演示

1. && 逻辑与运算符

#include<stdio.h>void main() {
double score = 70;//成绩
if(score>=60 && score<=80){
printf("ok1");
} else {
printf("ok2");
}
getchar();
}	
//  应该输出OK1
#include<stdio.h>void main() {int a = 10, b = 99;// if(a < 20 && b++>99)  // 先比较,后自增,所以b输出100// if(a < 20 && ++b>99)  // 先自增,在比较 ,所以会输出ok100// 说明:// 1.在进行 && 操作时,如果第一个条件为FALSE,则后面条件不在判断。// 2.该现象成为短路现象,所以 逻辑与 也称为 短路逻辑与if(a < 2 && ++b>99)   // 当改为 a < 2时,即为假,后面的就不会去判断,直接进行输出{   printf("\nok100");}printf("\nb=%d\n", b); //b=100getchar();
}

2. || 逻辑或运算符

#include<stdio.h>
// 逻辑或运算符 : 有真即真,全假为假
void main() {int a = 10, b = 99;// 说明:// 1.在进行逻辑与 时,如果第一个条件为真,则不在执行后面条件,整个结果为真// 2.该现象称为 逻辑或短路 现象,因此 逻辑或 也称为 短路逻辑或if(a > 5 || b++>100) {   //  当第一个条件为真时,就已经判断为真了,后面的条件是不会再进行执行printf("ok100");}printf("b=%d\n", b); //b=100getchar();
}

3. !逻辑非运算符

#include<stdio.h>void main() {int score = 100;int res = score > 199;   // 为真则输出Tom,为假则输出 jackif(res) {printf("hello, tom\n");}if(!res) {printf("hello,jack\n");}getchar();
}

P 43 逻辑运算符课堂练习 2022/8/28

一、题目练习

题目一:

#include<stdio.h>void main(){int x = 1;int y=1;if(x++==2 && ++y==2){   // x++,先比较,在自增,所有1!=2为假,故后面不执行,最后输出x=2,y=1x = 7; }printf("x= %d,y=%d",x,y); //x = 2, y =1getchar();
}

题目二:

#include<stdio.h>void main(){int x = 1,y = 1;if(x++==1 || ++y==1){   // x++,先比较,再自增,所以前面为真,后面就不执行了,最后输出x=7,y=1x =7;}printf("x=%d , y=%d",x,y); // x = 7, y = 1getchar();
}

题目三:

#include<stdio.h>void main() {int x=1;int y=0;short z=42;// = 一个等号是 赋值,== 两个等号 才是进行判断if((z++==42)&&(y=1)) { // z = 43 , y =1  ,z++; // z = 44}if((x=2) || (++z==45)) { // z = 45z++; // z = 46}printf("z=%d", z); // z 为46getchar();
}

P 44 赋值运算符介绍和使用 2022/8/28

一、基本介绍

赋值运算符就是将某个运算后的值赋给指定的变量

二、赋值运算符一览表

先讲 =、+=、-=、*= 、/=、%= ;

<<=、>>=、&=、^=、|= 和位运算相关,放在后面讲解.

image-20220828154614937

三、案例演示

  • 有两个变量,a和b,要求将其进行交换,最终打印结果
#include<stdio.h>void main(){//  有两个变量	a 和 b,要求将其进行交换,最终打印结果int a = 10;int b = 20;// 思路通过一个临时变量来实现 a,b值得交换int temp = a;a = b;b = temp;printf("\na=%d b=%d",a,b); // a = 20,b = 10;getchar();
}
  • += 的使用案例;其余-+,*=,/=,%= 。
#include<stdio.h>void main(){// += 的使用案例;其余-+,*=,/=,%=  。int c =12;c += 3;  // 等价于 c = c +3;printf("c=%d",c);  // c = 15getchar();
}

四、赋值运算符特点

1.运算顺序从右往左

int num1 = 10 + 3 // 先运算右边的10+3

2.赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值

int a = 10;c += 3; // 等价于c+3
c += a // 等价于 c+a

3.复合赋值运算符等价于下面的效果

比如:a+=3;等价于a=a+3;

	int c2 =15;c2 += 1.7; // 等价于 c2 = 1.7 + 15 ,但是只会取整,则是c2 = 16printf("c2=%d",c,c2); 

4.在运算是可能会截断小数点后面的一部门,造成数据丢失

P 45 三元运算符介绍和使用 2022/8/29

一、基本语法

  1. 如果条件表达式为非0 (真),运算后的结果是表达式1;
  2. 如果条件表达式为0 (假),运算后的结果是表达式2;
  3. 口诀: 一灯大师 =》 一真大师 === > 一真二假

二、案例演示

#include<stdio.h>void main(){int a = 10;int b = 99;int res = a > b ? a++ : b--;  //  一真二假;当前则为假,返回后面的,b--,先把值赋给res然后在进行自减,所以得 res = 99,a=10,b=98printf("\na=%d b=%d res=%d",a,b,res);getchar();
}

三、细节说明

  1. 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换),否则会有精度损失
	int n1 = a > b ? 1.1 : 1.2;     //	警告:编译器以为你把double给到了intprintf("\na=%d b=%d res=%d n1=%d",a,b,res,n1);
  1. 三元运算符可以转换成if – else 语句 int res = a > b ? a++ : --b; // if … else …

四、课堂练习

  1. 案例1:实现两个数的最大值 (a , b )
  2. 案例2:实现三个数的最大值
#include<stdio.h>void main(){int a = 10;int b = 100;int c = 199;// 第一种方法//int max = a >b ? a : b;//int  max2 = max > c ? max : c;// 第二种方法int max = (a >b ? a : b) > c ? (a >b ? a : b) : c;//printf("max=%d max2=%d",max,max2);printf("max=%d",max);getchar();
}

P 46 运算符优先级 2022/8/30

一、运算符优先级小结

  1. 结合的方向只有三个是从右向左,其余都是从左向右
  2. 所有的双目运算符中只有赋值运算符的结合方向是从右向左
  3. 另外两个从右向左的结合运算符,一个是单目运算,还有一个是三目运算()
  4. 逗号的运算符优先级最低
  5. 说一下优先级的大概的顺序 算术运算符 > 关系运算符 > 逻辑运算符(逻辑非! 除外) > 赋值运算符 > 逗号运算符
  6. 注意不需要刻意的记, 常用就慢慢有印象.

二、C语言运算符优先级一览表

image-20220830102245309

image-20220830102344836

三、优先级注意事项和细节

上表中,优先级同 为1 的几种运算符 如果同时出现,那 怎么确定表达式的 优先级呢?这里我们专门说明一把

image-20220830102744564

P 47 标识符命名规则和规范 2022/8/30

一、标识符概念以及命名规则

概念:

  1. C语言 对各种变量、函数等命名时使用的字符序列称为标识符
  2. 凡是自己可以起名字的地方都叫标识符

标识符命名规则:

  1. 由26个英文字母大小写,0-9 ,_或 $ 组成
  2. 数字不可以开头。
  3. 不可以使用关键字保留字,但能包含关键字和保留字。
  4. C语言中严格区分大小写,长度无限制。
  5. 标识符不能包含空格
判断下面变量名是否正确 hello // √
hello12 // √
1hello // × h-b // ×
x h //×
h$4 //√
int //×
double //×
stu_name //√

二、标识符命名规范

  1. 程序中不得出现仅靠大小写区分的相似的标识符int x, X; 变量x 与X 容易混淆
  2. 所有宏定义、枚举常数、常量(只读变量)全用大写字母命名,用下划线分隔单词比如: const double TAX_RATE = 0.08; //TAX_RATE 只读变量#define FILE_PATH “/usr/tmp”
  3. 定义变量别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据, 运行程序,会异常退出*.
int c1; // 没有初始化,就是没有给他赋值,可能造成程序异常退出
  1. 变量名、函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [驼峰法,小驼峰, 比如 short stuAge = 20;] 比如: tankShotGame 大驼峰 [TankShotGame]

三、关键字的定义和特点

image-20220830111209351

P 48 键盘输入语句 2022/8/30

一、基本介绍

介绍:在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。InputDemo.c

步骤:

  1. include <stdio.h>
  2. 使用scanf 函数
  3. 使用适当的格式参数接收输入

二、案例演示

要求:可以从控制台接收用户信息,【姓名,年龄,薪水,性别 (male(m) / female(f))】。

#include<stdio.h>void main(){// 使用字符数组接收文字char name[10] = "";int age = 0;double sal = 0.0;char gender = ' ' ;// 提示用户 输入信息printf("请输入名字:");// 接收一个字符串并且放在name这个字符数组中scanf("%s,",name);printf("请输入年龄:");scanf("%d",&age); // 因为我们将得到的输入存放到age变量指向的地址中,因此需要加&符// // 如果将一个整数放进去,就是他指向的一个地址,因此要加&printf("请输入薪水:");scanf("%lf",&sal);  // 接收一个double时,格式参数 %lfprintf("请输入性别(m/f):");scanf("%c",&gender); // 因为char类型是字符,回车就是一个字符,所以这里是接收上面的回车字符scanf("%c",&gender); //  这里才是 等待用户输入// 输出得到的信息printf("\nname %s age %d sal %.2f gender %c",name,age,sal,gender);getchar(); //  因为gender要输入字符,回车就是一个字符;接收到一个回车getchar();  // 因此我们需要在打一个getchar 控制台才会暂停
}

image-20220830172526188

P 49 运算符的综合练习题 2022/8/31

一、课后练习题

题目一:定义变量保存 秒数,打印输出 xx小时xx分钟xx秒

#include<stdio.h>void main(){// 定义变量保存秒数吗,打印输出xx小时xx分钟xx秒// 思路// 1. 定义变量保存 秒数 second// 2. 定义变量保存 小时 hour// 3. 定义变量保存 分钟 min// 4.定义变量保存 剩余的秒数 leftSendconint second = 894567;int hour = second / 3600; // 一个小时有3600秒int min = second % 3600 / 60;int leftSendcon = second % 60; // 模60就是剩余的秒数printf("%d  秒 合 %d 小时 %d分钟 %d 秒",second,hour,min,leftSendcon);getchar();
}

题目二:实现对三个整数进行排序,输出时按照从小到大的顺序输出

#include<stdio.h>void main(){// 实现对三个整数进行排序,输出时按照从小到大的顺序输出-->冒泡法// 思路// 1. 从小到大将值保存到n1 n2 n3int n1 =10;int n2 = 8;int n3 = 5;int temp = 0; // tmp 是用来交换的临时变量//	printf("\n最初顺序n1=%d n2=%d n3=%d",n1,n2,n3);// 2. n1 和 n2 比较,如果n1大于n2,则交换if(n1 > n2) {temp = n1;n1 = n2;n2 =temp;}// 输出
//	printf("\n第一次处理 n1=%d n2=%d n3=%d",n1,n2,n3);// 3. n2 和 n3 比较,如果n2大于n3,则交换if(n2 > n3) {temp = n2;n2 = n3;n3 =temp;}
//	printf("\n第二次处理 n1=%d n2=%d n3=%d",n1,n2,n3);// 4. n1 和 n2 比较,如果n1大于n2,则交换if(n1 > n2) {temp = n1;n1 = n2;n2 =temp;}printf("\n第三次处理 n1=%d n2=%d n3=%d",n1,n2,n3);getchar(); }

题目三:写出程序的输出结果

int x=1,y=12;
x+=2; // x=3 y-=3; // y =9 
printf("\n");
printf("x= %d y=%d",x, y); // x=3,y=9
y/=x; // y = 3
printf("x= %d y=%d",x, y);// x=3,y=3
y++; //y=4
y%=x; //y=1
printf("x= %d y=%d",x, y);//x =3 ,y =1
getchar();

题目四:实现两个整数的加减乘除以及取余算法

int a=5+4; int b=a*2; int c=b/4; int d=b-c; int e=-d; int f=e%4; 
int i=3;int j=i++; int k=++i;
printf("a=%d", a); //9
printf("b=%d", b); //18
printf("c=%d", c); // 4
printf("d=%d", d);// 14
printf("e=%d", e);//-14
printf("f=%d", f); //-2
printf("i=%d", i);//3
printf("j=%d", j);//3 => i =4
printf("k=%d", k);//5
getchar();

题目五:写出程序的输出结果

int n=3, m=4;
printf("\n n<m is =%d ",(n<m)); //1
printf("\n n=m is =%d ",((++n)==m));//1 // n =4
printf("\n n>m is =%d",((++n)>m));//1//n =5
printf("\n n is =%d ", n);// 5
getchar();

P 50 四种进制的规则 2022/8/31

一、进制介绍

对于整数,有四种表示方式:

  1. 二进制:0,1 ,满2进1,C语言中没有二进制常数的表示方法。

  2. 十进制:0-9 ,满10进1。

  3. 八进制:0-7 ,满8进1. 以数字0开头表示。

  4. 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。[A->10 B->11 C->12 D->13 E->14 F->15 ]

如:0x21AF +1= 0X21B0 ,在这里 如+1,则就是F+1就是16了,满16进1,所以前面A–>就变成B了。

二、进制的图示

image-20220831234229202

image-20220831234531421


http://www.ppmy.cn/embedded/119948.html

相关文章

yum库 docker的小白安装教程(附部分问题及其解决方案)

yum库 首先我们安装yum 首先在控制台执行下列语句 首先切换到root用户&#xff0c;假如已经是了就不用打下面的语句 su root #使用国内的镜像&#xff0c;不执行直接安装yum是国外的&#xff0c;那个有问题 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.al…

9.29 LeetCode 3304、3300、3301

思路&#xff1a; ⭐进行无限次操作&#xff0c;但是 k 的取值小于 500 &#xff0c;所以当 word 的长度大于 500 时就可以停止操作进行取值了 如果字符为 ‘z’ &#xff0c;单独处理使其变为 ‘a’ 得到得到操作后的新字符串&#xff0c;和原字符串拼接 class Solution { …

Google ads投广中的这些问题,看你中了没

谷歌广告是一个强大的工具&#xff0c;可以显著提升外贸独立站的流量和销售。但是&#xff0c;要想充分发挥其潜力&#xff0c;需要深入了解其工作原理&#xff0c;并掌握如何设定预算、选择关键词、创建广告文案等技巧。以下是一些在谷歌广告投放过程中网友遇到的一些问题及其…

linux系统的常用命令

微服务Linux解析部署使用全流程 Linux安装vim超详细教程 Linux安装JDK及配置环境变量超详细教程 Linux安装tomcat及配置环境变量超详细教程 目录 1、ls&#xff1a;列出目录内容。 2、cd&#xff1a;改变当前目录。 3、pwd&#xff1a;打印当前工作目录的路径 4、mkdir…

Host文件及switchhosts for mac下载

一、概念 hosts 是一个文本文件&#xff0c;用来将主机名或域名映射到对应的 IP 地址。 这个文件通常位于 /etc/hosts&#xff08;在 Unix-like 系统上&#xff0c;包括 macOS 和 Linux&#xff09; 可以在终端输入sudo vim /etc/hosts来打开 或 C:\Windows\System32\driver…

微信小程序 - 最新详细安装使用 Vant weapp UI 框架环境搭建详细教程

前言 自从 2024 年开始,小程序做了很多改变和升级, 导致网上很多搭建教程文章的教程失效了,本文来做最新的教程。 第一步 为了更贴合新手,我这里创建了一个纯净无任何业务代码的小程序项目。

Flux最新ControlNet 高清修复模型测评,效果好速度快!

上一篇介绍了Jasper AI 发布了三个模型中的法线贴图&#xff0c;没看过的可以看一下哈&#xff1a; Flux目前最快ControlNet模型现身&#xff01;法线贴图详细测评 (chinaz.com) 这次再介绍一下另一个模型&#xff1a;升频器&#xff0c;可以有比较好的模糊修复效果&#xff…

三篇文章速通JavaSE到SpringBoot框架 (中) IO 进程线程 网络编程 XML MySQL JDBC相关概念与演示代码

文章目录 IOfile类的作用I/O的作用将上篇文章综合项目使用IO流升级所需知识点 进程 线程创建线程的三种方式 网络编程网络编程介绍IP地址端口号网络通信协议网络通信协议的分层演示代码 XMLXML的作用是什么&#xff1f;xml特点 注解什么是注解&#xff1f;注解的使用注解的重要…