重温C语言五:运算符的学习
运算符
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语言五:运算符的学习相关推荐
- 重温C语言二:变量学习笔记
目录 变量 1.为什么需要变量? 2.变量的介绍 3.变量的快速入门 4.变量的使用注意事项 5.变量的数据类型 C语言数据类型: 变量 1.为什么需要变量? 变量是程序的基本组成单位. 不论是使用那 ...
- 【Python学习日历】Day.1-Python语言与运算符
Python学习日历 Day.1-Python语言与运算符 一.关于Python语言 1. Python语言的诞生 2. Python语言的特点 二.运算符 1. Python运算符优先级和结合性 2 ...
- c语言 4则运算符,C语言学习之路之四-----------C语言的运算符与表达式
C语言的运算符与表达式 运算符与表达式 C语言的运算符又称为操作符,是数据间进行运算的符号.C语言的运算符按运算类型可分为赋值运算符.算术运算符.逻辑运算符.关系运算符.位运算符.指针运算符和取成员运 ...
- 大一上学期C语言不熟知识点学习总结
大一上学期C语言不熟知识点学习总结通过前几章对顺序结构程序设计程序.if选择结构.switch语句.循环结构.数组.函数的学习,这一次我将主要针对几种不熟悉的知识点及题型进行分析. 一. 增1和减1运 ...
- 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,实 ...
- 初步认识嵌入式:Linux的初步了解与C语言基础的初步学习
一:首先了解了嵌入式的基本知识结构: 基础: 编程 相关 C语言编程 C语言基础 Linux系统基础 C语言的高级编程 如何使用C语言 数据结构: 如果更好的编程程序 应用层: 侧重 应用软件 程序 ...
- c语言等号 逗号,C语言逗号运算符和逗号表达式
在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...
- 分享五款java学习辅助工具,总有你用的上的~
想要学好java技术,除了自身的努力,辅助工具也不缺少,辅助工具可以帮助大家在今后的工作中可以提高工作效率,下面小编就来分享五款java学习辅助工具,总有你用的上的~ 五款java学习辅助工具: 1. ...
- c语言中语句作用,学习C语言的用途~
原标题:学习C语言的用途~ C是基础的语言 C语言被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但是 最基础的东西是也比较好学的语言 如:金山的创始人江明 从30多岁开始学语言 学的 ...
- c语言三元运算符_了解C / C ++中的三元运算符
c语言三元运算符 In this article, we'll take a look at understanding the ternary operator in C / C++. 在本文中,我 ...
最新文章
- linux病毒sfewfesfs
- MySQL修改字段名、字段类型
- STM32F103ZET6 点灯的三种操作方式(库函数、寄存器、位操作)
- jQuery stop()浅析
- 第二次发布 - 轻剑傲风的RSS简易阅读器改装版。
- android 类似按键精灵脚本_android软件。按键精灵或者脚本精灵都可以,录制脚本可以设置播放次数的最好了。...
- 解决delphi7在win10上安装后无法正常使用的问题
- 做自媒体4大免费网站,帮助我们更快上手运营
- win10摄像头可以用计算机里不显示,win10打开计算机如何显示摄像头
- AARRR模型——激活:获客红海背后的蓝海(上)
- PLUS模型教程1:认识PLUS模型
- 华为机试 16进制转换成十进制
- Bugzilla 的安装
- Input框内容改变触发事件,实现表格动态模糊查询
- AI遮天传 DL-回归与分类
- 初中物理公式总结大全(pdf可下载)
- 蜗牛一般的UAP开发(零)初识UAP
- 【我的反思】每一个选择都绝不是一无是处,也许是花,也许,是荆棘
- ChaosBlade
- Springboot----项目整合微信支付(处理微信支付回调通知)