运算符

1、运算符的介绍

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

1)算术运算符(+, - ,*, /, %)

2)赋值运算符(=,+=,-=,*=)

3)关系运算符(比较运算符)[比如:>,>=,<=,<,==等等]

4)逻辑运算符(&&,|| ,!)

5)位运算符(& 按位与 |按位或 ^按位异或~按位取反等等)

6)三元运算符运算符(表达式 ? 表达式1:表达式2)

2.算术运算符

介绍;

算术运算符是对数值类型的变量进行运算的,在C程序中使用的非常多。

算术运算符一览表:

算术运算符的使用

1)+,-*,/,%,++,–

代码演示(/he%)

#include <stdio.h>
//非常重要
int main1() {//处理流程分析//10/4=2.5==截取整数==>1==2.00000double d1=10/4;//如果需要保留小数那么参与运算的数必须有浮点数double d2=10/4.0;printf("d1=%f\n",d1);//2.000000printf("d2=%f\n",d2);//2.500000return 0;
}
#include <stdio.h>
void main2(){int res1=10%3 ;//求10、3的余数是1int res2=-10%3;printf("res=%d\n",res1);//值为1printf("res2=%d",res2);//值为-1://-10-(-10)/3*3=-10-(-3)*3=-10+9=-1;//取模公式(遇到负数时可用此公式解答)//a%b=a-b*b(这个公式很重要int res3=10%(-3);//10-10/(-3)*(-3)=1;printf("res3=%d\n",res3);//值为1int res4=-10%-3;//-10-(-10)/(-3)*(-3)=-10-(-9)=-1printf("res4=%d",res4);
}

2)自增:++

作为独立的语句使用:前++和后++都完全等价于i=i+1;

作为表达式所用

前++:++1 先自增后赋值

后++:i++先赋值后自增‘

代码演示

#include <stdio.h>
//关于i++,++i
void main(){//i++的使用
int i=10;
//int j=i++;//10等价于int j=i;i=i+1==>j=10,i=11
int k=++i;//12 等价于 int k=i+1;i=i+1
printf("i=%d\n",i);
//printf("j=%d",j);
printf("k=%d\n",k);
//printf("j=%d k=%d\n",j,k);//++或者--可以独立的使用,就相当于自增(二者效果完全一致)
k++;//等价于k=k+1
++k;//等价于k=k+1;printf("k=%d",k);
}

3)–也是一个道理

4)细节说明:

  • 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:doublex=10/3,结果是3.000000,如果要保留小数点,则要使参与运算的变量一个保留小数点即可
  • 当对于一个数取模时,可以等价 a%b=a-a/b*b ,这样我们可以看到取模的一个本质运算
  • 当自增当作一个独立语言使用时,不管是**++i还是i++**;都是一样的都等价于:i=i+1;
  • 当后加自增作为一个表达式进行赋值给另一个变量时 k=i++;等价于:k=i,i=i+1
  • 当前加自增作为一个表达式进行赋值给另一个变量时 **k=++i;**等价于:k=i+1,i=i+1

习题理解:

#include<stdio.h>
void main4(){int i1=10,i2=20;int i=i1++;printf("i=%d\n",i);//i=10printf("i1=%d\n",i1);//i1=11i=++i1;printf("i=%d\n",i);//12printf("i1=%d\n",i1);//12i=i1--;printf("i=%d\n",i);//12printf("i1=%d\n",i1);//11i=--i1;printf("i=%d\n",i);//10printf("i1=%d\n",i1);//10
}

题二

#include <stdio.h>
void main(){//假如还有97天放假,问:xxx个星期零xx天
//题1//思路/** 1.定义一个days保存天数* 2.定义week保存计算得到*/int days=97;int week=days/7;int mod=days%7;printf("%d个星期%d天\n",week,mod);
//题2
/** 定义一个变量保存华氏温度,华氏温度转换摄氏度温度的公式为:* 5/9*(华氏温度-10),请求出华氏温度对应的摄氏温度* 思路* 1用huaShi华氏温度* 2.用sheshi摄氏温度* 3.使用公式进行转换*/
double huashi=146.7;
double sheshi=5.0/9*(huashi-100);//参与的运算的变量要有小数的
printf("\n华氏温度%.2f对应的摄氏温度是%.2f",huashi,sheshi);}

3.关系运算符

1)介绍

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

注意:在C语言中没有boolean类型。

2)关系运算符

关系运算一览表

运算符 运算 例子 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
> 大于 4>3 true
<= 小于等于 4<=3 false
>= 大于等于 4>=3 true

3).细节说明

  • 关系运算符的结果要么是真(非0表示,默认使用1)要么是假(用0表示)

  • 关系运算符组成的表达式,我们称为关系表达式:a>b

  • 比较运算符"==“[关系运算符] (不能误写成”="[赋值])

案例:

#include<stdio.h>
void main(){int a=6;int b=7;printf("a>b=%d\n",a>b);//输出0表示假printf("a<b=%d\n",a<b);//输出1表示真printf("a>=b=%d",a>=b);//输出0表示假
}

4.逻辑运算符

1)介绍;

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

2).逻辑运算符一览

下表显示了C语言支持的所有逻辑运算符。假设变量A的值是1,变量B的值为0,。则

运算符 描述 实例
&& 称为逻辑与运算符。如果两个操作数都非零则条件为真 A&&B为假
|| 称为逻辑或运算符。如果两个操作数中有任意一个为非零,则条件为真 A||B为真
称为逻辑非运算符。用来逆操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假 !(A&&B)为真

逻辑&&的案例

#include <stdio.h>
void main(){double score=56;if(score>=60&& score<80){//两个满足才为真,否则为假printf("ok1");}else{printf("ok2");}
}
#include <stdio.h>
//逻辑与的操作
void main(){int a=10,b=99;//说明//1.在进行&&操作时,如果第一个条件为false,则后面的条件不在判断//2.该现象称为短路现象,所以逻辑与也成位短路逻辑与//3.如果第一个条件为真,那么第二个条件就会执行并判断if(a<2&&++b>99) {printf("ok100");}printf("b=%d",b);//输出b=99
}

逻辑或||的案例操作

#include<stdio.h>
//逻辑或的话如果第一个条件为真,程序就不会继续判断了,
// 如果第一个条件为假第二个条件就会继续执行判断操作
//该现象称为段落逻辑或现象,因此逻辑或也称为断路逻辑或
void main(){int a=10,b=99;if(a<20||++b>99) {printf("ok100\n");}printf("b=%d",b);//输出99
}

逻辑非!的案例操作

#include<stdio.h>
void main9(){int score=100;int res=score<99;if(res){printf("hello tom\n");}if(!res){//假的变成真的printf("hello,jack");}
}

逻辑运算符题目

#include<stdio.h>
void main10(){int x=1;int y=1;if(x++==2&&++y==2){x=7;}printf("x=%d y=%d\n",x,y);//x=2,y=1
}
#include<stdio.h>
void main(){int x=1;int y=1;if(x++==1 || ++y==1){x=7;}printf("x=%d y=%d\n",x,y);//x7,y=1
}
#include<stdio.h>
void main(){int x=1;int y=0;short z=42;if((z++==42)&&(y==1)){z++;//不会执行}if((x=0)||(z++==45)){z++;//不会执行}printf("z=%d",z);//z=44
}
#include<stdio.h>
void main(){int x=1;int y=0;short z=42;if((z++==42)&&(y=1)){//z=43 y=1z++;//z=44}if((x=0)||(++z==45)){ //z=45z++;//z=46}printf("z=%d",z);//z=46
}

5.赋值运算符

1)介绍

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

运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C=A+B把A+B的值赋给C
+= 加且赋值运算符,把右边的操作数加上左边的操作数赋值给左边操作数 C+=相当于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=C2
|= 按位或且赋值运算符 C|=2等同于C=C|2

2).案例演示

  • 赋值基本案例[int num=10]

    int num=10;
    
  • 有两个变量,a和b,要求将其进行交换,最终打印结果

    #include <stdio.h>
    void main(){//有两个变量,a和b,要求将其进行交换,最终打印结果int a=10;int b=11;printf("交换前: a=%d b=%d\n",a,b);//交换前: a=10 b=11int c;c=a;a=b;b=c;printf("交换后: a=%d b=%d",a,b);//交换后: a=11 b=10}
    
  • +=的使用案例

3).赋值运算符的特点

  • 运算顺从右往左

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

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

    eg:

    a+=3.等价于a=a+3

5.三元运算符

基本语法

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

1)如果条件表达式为非0(真),运算后的结果是表达式1;

2)如果条件表达式为0(假),运算后的结果是表达式2;

使用细节

  • 表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换),否则会有精度损失

  • 三元运算符可以转换为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 max3=(a>b? a:b) >c ? (a>b? a: b)//另一中写法printf("a和b两个数之间的最大值为=%d\n",max);//输出为100printf("a和b和c三个数之间的最大值为=%d",max2);//199
}

6.运算符的优先级

1)优先级一览表

2)运算符优先级小结:

  • 结合方向只有三个式从右向左,其余都是从左向右
  • **所有的双目运算符(有两个操作符的)**中,只有赋值运算符的结合方向是从有向左
  • 另外两个从右向左的结合运算符,一个是单目运算(只跟一个变量的这种++i),一个三目运算(三元运算符)
  • 逗号的运算符优先级是最低的
  • 说一下优先级的大概顺序:算数运算符>关系运算符>逻辑运算符>赋值运算符>逗号运算符

a>b? a:b) >c ? (a>b? a: b)//另一中写法
printf(“a和b两个数之间的最大值为=%d\n”,max);//输出为100
printf(“a和b和c三个数之间的最大值为=%d”,max2);//199
}
同级别优先级的比较

重温C语言五:运算符的学习相关推荐

  1. 重温C语言二:变量学习笔记

    目录 变量 1.为什么需要变量? 2.变量的介绍 3.变量的快速入门 4.变量的使用注意事项 5.变量的数据类型 C语言数据类型: 变量 1.为什么需要变量? 变量是程序的基本组成单位. 不论是使用那 ...

  2. 【Python学习日历】Day.1-Python语言与运算符

    Python学习日历 Day.1-Python语言与运算符 一.关于Python语言 1. Python语言的诞生 2. Python语言的特点 二.运算符 1. Python运算符优先级和结合性 2 ...

  3. c语言 4则运算符,C语言学习之路之四-----------C语言的运算符与表达式

    C语言的运算符与表达式 运算符与表达式 C语言的运算符又称为操作符,是数据间进行运算的符号.C语言的运算符按运算类型可分为赋值运算符.算术运算符.逻辑运算符.关系运算符.位运算符.指针运算符和取成员运 ...

  4. 大一上学期C语言不熟知识点学习总结

    大一上学期C语言不熟知识点学习总结通过前几章对顺序结构程序设计程序.if选择结构.switch语句.循环结构.数组.函数的学习,这一次我将主要针对几种不熟悉的知识点及题型进行分析. 一. 增1和减1运 ...

  5. C语言之顺序程序设计学习笔记

    文章目录 1,前言 2,数据的表现形式及其运算 2.1,常量和变量 2.1.1,常量 2.1.2变量 2.1.3,标识符 2.3,数据类型 2.3.1,整数类型 2.3.2,字符型数据 2.3.3,实 ...

  6. 初步认识嵌入式:Linux的初步了解与C语言基础的初步学习

    一:首先了解了嵌入式的基本知识结构: 基础: 编程 相关 C语言编程 C语言基础 Linux系统基础 C语言的高级编程 如何使用C语言 数据结构: 如果更好的编程程序 应用层: 侧重 应用软件 程序 ...

  7. c语言等号 逗号,C语言逗号运算符和逗号表达式

    在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...

  8. 分享五款java学习辅助工具,总有你用的上的~

    想要学好java技术,除了自身的努力,辅助工具也不缺少,辅助工具可以帮助大家在今后的工作中可以提高工作效率,下面小编就来分享五款java学习辅助工具,总有你用的上的~ 五款java学习辅助工具: 1. ...

  9. c语言中语句作用,学习C语言的用途~

    原标题:学习C语言的用途~ C是基础的语言 C语言被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但是 最基础的东西是也比较好学的语言 如:金山的创始人江明 从30多岁开始学语言 学的 ...

  10. c语言三元运算符_了解C / C ++中的三元运算符

    c语言三元运算符 In this article, we'll take a look at understanding the ternary operator in C / C++. 在本文中,我 ...

最新文章

  1. linux病毒sfewfesfs
  2. MySQL修改字段名、字段类型
  3. STM32F103ZET6 点灯的三种操作方式(库函数、寄存器、位操作)
  4. jQuery stop()浅析
  5. 第二次发布 - 轻剑傲风的RSS简易阅读器改装版。
  6. android 类似按键精灵脚本_android软件。按键精灵或者脚本精灵都可以,录制脚本可以设置播放次数的最好了。...
  7. 解决delphi7在win10上安装后无法正常使用的问题
  8. 做自媒体4大免费网站,帮助我们更快上手运营
  9. win10摄像头可以用计算机里不显示,win10打开计算机如何显示摄像头
  10. AARRR模型——激活:获客红海背后的蓝海(上)
  11. PLUS模型教程1:认识PLUS模型
  12. 华为机试 16进制转换成十进制
  13. Bugzilla 的安装
  14. Input框内容改变触发事件,实现表格动态模糊查询
  15. AI遮天传 DL-回归与分类
  16. 初中物理公式总结大全(pdf可下载)
  17. 蜗牛一般的UAP开发(零)初识UAP
  18. 【我的反思】每一个选择都绝不是一无是处,也许是花,也许,是荆棘
  19. ChaosBlade
  20. Springboot----项目整合微信支付(处理微信支付回调通知)

热门文章

  1. 3DMax如何通过光子图渲染
  2. 动画设计基础(三点一节)-3d max2014 裙摆(飘带插件)
  3. 防抖和节流理解,以及lodash使用
  4. C#打印pdf遇到的问题
  5. Spring Boot学习笔记(二十一)Spring boot 数据校验 @Validated、@Valid用法详解
  6. 2019.9.15训练总结
  7. 计算机NIC配置,在主计算机或 VM 上创建新的 NIC 团队
  8. 【OS笔记 9】操作系统内核的功能
  9. unity运行时修改光源的颜色,变成白色
  10. 测试基础知识1 》》软件测试入门