C语言复习(五)—— 运算符

一个函数的构成
:返回类型 函数名(形参列表)

C语言运算符的优先级表

在这里插入图片描述
在讲解具体运算符之前,介绍几个与之相关的术语:
操作数(operand)、运算符(operator)、左值(lvalue)和右值(rvalue)

**操作数(operand)**是程序操纵的数据实体,该数据可以是数值、逻辑值或其他类型。该操作数既可以是常量也可以为变量。

运算符(operator)是可以对数据进行相应操作的符号。如对数据求和操作,用加法运算符 ‘+’,求积操作使用乘法运算符 ‘*’ 等。

根据运算符可操作的操作数的个数,可把运算符分为一元运算符(单目运算符)、二元运算符(双目运算符)和
元运算符
(C 语言只有一个三元运算符(?:),三目运算符)。

C 语言提供了丰富的运算符:
有:算术运算符、关系运算符、逻辑运算符、赋值运算符、移位运算符、逗号运算符及 sizeof 运算符

对应有:算术表达式、关系表达式、逻辑表达式、赋值表达式、移位表达式、逗号表达式及 sizeof 表达式等。

左值(lvalue)和右值(rvalue)按字面意思通俗地说。
以赋值符号=为界,=左边的就是左值,=右边就是右值。

更深一层,可以将 L-value 的 L, 理解成 Location,表示可寻址。Avalue (computer science)that has an address 。R-value 中的 R 指的是 Read,表示可读。in computer science, a value that does not have an address in a computer language.


运算符举例

  1. % (余数)取模
  2. *=, +=
  3. 三目运算符
  4. 主要讲解前置++,和后置++;

1.余数的定义:整除“余”下的“数”。
则有:余数=被除数-商*除数
商就是我们整除的结果。

取模运算在 c 语言中的应用:

1、判断是否能够整除某个数;
2、判别奇偶数,判别质数(或素数);
3、计算范围。形成循环。
4、求最大公约数; 求最大公约数最常见的方法是欧几里德算法(又称辗转相除法),
其计算原理依赖于定理:gcd(a,b) = gcd(b,a mod b)

辗转相除法的原理

a/b=q余r,除数b和余数r能被同一个数整除,那么被除数a也能被这个数整除。或者说,除数与余数的最大公约数,就是被除数与除数的最大公约数。即被除数与除数的最大公约数,就是除数与余数的最大公约数

#include <stdio.h>
 
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);	
	int r = 0;
	while (r = m % n)
	{
		m = n; // 以除数作为被除数
		n = r; // 以余数作为除数
	}
	printf("%d\n", n); // 最后的除数为最大公约数
	return 0;
}

由于被除数与除数的最大公约数,就是除数与余数的最大公约数,即gcd(a,b)=gcd(b, a%b),所以也可以设计一个递归算法计算最大公约数。

#include <stdio.h>
 
int gcd(int a, int b)
{
	if (b == 0)
		return a;
	else
		return gcd(b, a % b);
}
 
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	printf("%d\n", gcd(m, n));
	return 0;
}

1.取模

在这里插入图片描述
2.运算符顺序

#include<stdio.h>
#include<stdlib.h>

 int main()
{
 int a = 3, b = 4, c = 5;
 a *= b + c;//(从右往左计算)
 printf("a = %d \n",a); a =27
return 0;
}

#include<stdio.h>
void main()
{
	int a=1,b=2,c=3,d,e;
	d=((c>a)?a:b);
	e=((c<a)?a:b);
	printf("d=%d,e=%d\n",d,e);
}
 
输出:d=1,e=2

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋到亦天凉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值