C语言

运算符介绍

基本介绍

运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等

  1. 算术运算符 (+ - * / %)
  2. 赋值运算符 (= += -= ..)
  3. 关系运算符,又叫比较运算符 (> >= < <= 等等)
  4. 逻辑运算符 (&& 逻辑与 || 逻辑或 !逻辑非)
  5. 位运算符 (&按位与 |按位或 ^按位异或 ~按位取反等等)
  6. 三元运算符 (表达式 ? 表达式1:表达式2)

算术运算符

介绍

算数运算符是对数值类型的变量进行运算的,在C程序中使用的非常多 输入图片描述

#include<stdio.h>

void main(){

//取模公式
// a % b = a - a / b * b 

int res1 = 10 % 3;//求10/3的余数1
int res2 = -10 % 3;// -10 - (-10)/ 3 * 3 =  -10 - (-3) * 3 = -10 + 9 = -1
int res3 = 10 % -3;// 10 - 10/ (-3) * (-3) =  10 - (-3) * (-3) = 10 - 9 = 1
int res4 = -10 % -3;

//++的使用

int i = 10;
int j = i++;//运算规则等价是 int j = i; i = i + 1; ===> j = 10, i = 11
int k = ++i;//运算规则等价 i = i + 1; int k = i; ;===> i = 12, k = 12



printf("res1=%d res2=%d res3=%d res4=%d",res1,res2,res3,res4);
printf("\n i=%d j=%d k=%d",i,j,k);
printf("\n i=%d",i);

//++ 或者 -- 还可以独立使用,相当于自增 自减
//k++ 等价于 k = k + 1
//++k 等价于 k = k + 1
//如果独立使用 ++k 和 k++ 完全等价

getchar();

}

细节说明

  1. 对于除号 “/” ,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数,部分而舍弃小数部分。例如:int x = 10/3,结果是3
  2. 当对一个数取模时,可以等价 a % b = a - a / b * b ,这样我们可以看到 取模的一个本质运算
  3. 当 自增 当作一个独立语言使用时,不管是 i; 还是 i; 都是一样的 等价
  4. 当 自增 当作一个表达式使用时 j= ++i 等价 i = i + 1; j = i;
  5. 当 自增 当作一个表达式使用时 j= i++ 等价 j = i; i = i + 1;

课堂说明

  1. 还有97天放假,问 几星期几天

     int days = 97;
     int week = days / 7;
     int leftdays = days % 7;
    
     printf("%d=个星期 %d=天",week,leftdays);
    
  2. 147.6华氏度对应的摄氏度

     double huaShi = 147.6;
     double sheShi = 5.0/9*(huaShi - 32);
    
     printf("147.6℉=%.2f",sheShi);
    

关系运算符

介绍

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

关系运算符一览

输入图片描述

int a = 8;
int b = 7;
printf("\na>b=%d",a > b);//1
printf("\na<b=%d",a < b);//0
printf("\na<=b=%d",a <= b);//0
printf("\na>=b=%d",a >= b);//1
printf("\na==b=%d",a == b);//0
printf("\na!=b=%d",a != b);//1

细节说明

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

逻辑运算符

介绍

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

逻辑运算符一览

下表显示了C语言支持的所有逻辑运算符,假设变量A的值为1,变量B的值为0,则 输入图片描述

案例演示

输入图片描述 //ok1 //b=100 输入图片描述

细节说明

逻辑与&&

  1. 在运行逻辑与时,如果第一个条件为假,则不再执行后面的条件,整个结果为假
  2. 该现象被称为逻辑与短路现象

逻辑或|| 3. 在运行逻辑与时,如果第一个条件为真,则不再执行后面的条件,整个结果为真 4. 该现象被称为逻辑或短路现象


赋值运算符

介绍

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

赋值运算符一览表

= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C=A+B 把A+B的值赋给C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C+=A 相当于 C=C+A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C-=A 相当于 C=C-A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C*=A 相当于 C=C*A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C/=A 相当于 C=C/A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C%=A 相当于 C=C%A
<<= 左移且赋值运算符 C<<=2 等同于 C=C<<2
>>= 右移且赋值运算符 C>>=2 等同于 C=C>>2
&= 按位与且赋值运算符 C&=2 等同于 C=C&2
^= 按位异或且赋值运算符 C^=2 等同于 C=C^2
|= 按位或且赋值运算符 C|=2 等同于 C=C|2

案例演示

案例演示赋值运算符的基本使用

  1. 赋值基本案例 [int num1 = 10]
  2. 有两个变量,a和b,要求将其进行交换,最终打印结果
  3. += 的使用案例

赋值运算符特点

  1. 运算顺序从右往左
  2. 赋值运算符的左边只能是变量,右边可以是变量,表达式,常量值。
  3. 复合赋值运算符等价于下面的效果 比如: a+=3;等价于a=a+3;

位运算符

介绍

位运算符作用于位,并逐位执行操作

赋值运算符一览表

要彻底搞懂位运算,先学习二进制

& 按位与操作,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;
| 按位与操作,按二进制位进行“或”运算。运算规则:0|0=0;0|1=1;1|0=1;1|1=1;
^ 异或运算符,按二进制位进行“异或”运算。运算规则:0^0=0;0^1=1;1^0=1;1^1=0;
~ 取反运算符,按二进制位进行“取反”运算。运算规则:~1=0;~0=1;
<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
>> 二进制右移运算符。将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃

实例

  1. & (A & B)将得到12, 即为0000 1100
  2. | (A | B) 将得到61, 即为0011 1101
  3. ^ (A ^ B)将得到49, 即为0011 0001
  4. ~ (~A) 将得到 -61, 即为1100 0011
  5. << A<<2 将得到 240, 即为1111 0000
  6. >> A>>2 将得到 15, 即为0000 1111

三元运算符

基本语法

条件表达式?表达式1:表达式2

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

案例演示

	int a = 10;
	int b = 99;
	int res = a > b ? a++:b-//这里的:的意思是否则的意思

使用细节

  1. 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换),否则会有精度损失
  2. 三元运算符可以转换成if-else语句 if res = a > b ? a++ : -b;

课堂练习

  1. 实现两个数的最大值

     int a = 10;
     int b = 100;
     int c = 199;
     int max = a > b ? a : b
     int max = a > b ? a : b
     int maxmax = b > c ? b : a
    
  2. 实现三个数的最大值


本文章使用limfx的vscode插件快速发布