博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运算符和表达式
阅读量:4933 次
发布时间:2019-06-11

本文共 2647 字,大约阅读时间需要 8 分钟。

运算符和表达式

  C语言中运算符的种类有很多,最常见的就是 + - * / ,除此之外,还有其他运算符可以帮助我们实现更加复杂的程序

  表达式,是由运算符、变量、常量 这三种中的一种或几种组成的

  一个合法的表达式 不一定要有运算符,但是运算符自己无法构成合法的表达式

  作为一个表达式,如何正确地看待?

  <1>看 表达式的 功能

  <2>看 表达式的 值

 

一.[算术运算符] + - * / %

 

  原则:相同类型的数据在一起做运算,结果还是原来的类型。

  %--取余--运算的结果是余数。

  取余运算的左右两边的操作数必须是正数

  不同类型的数据要做混合运算,必须要遵循以下原则

  10%1.2

  <1>整型要向浮点型看齐:int+float=float

    1.2f%2.4

    printf("%c\n",10+'a');

  <2>单精度要向双精度看齐:float+double=double

  <3>短字节向长字节看齐:char+int=int

  <4>*有符号向无符号看齐:int+unsigned int=unsigned int 

int v1=10;unsigned int v2=-1;//有符号整型变量 v1,0000 0000~0000 1010//无符号整型变量 v2,1111 1111~1111 1111--- 2^32-1if(v1>v2){    printf("v1>v2\n");}else{    printf("v1<=v2\n");}printf("v2==%u\n",v2);

 

二.[赋值运算符] =

 

  赋值表达式:

    变量=表达式

  [功能]赋值表达式的功能:计算右边表达式的值,给左边变量赋值

  [值]    整个赋值表达式的值是左边变量被赋值之后的值。

  [注]    赋值表达式左边必须是变量

  C中求x的y次方,用 pow 函数,这是个系统库函数

  使用这个函数,需要包含头文件 math.h

  <>是用来包含系统头文件,“”是用来包含用户自己创建的头文件

 

三.[复合赋值运算符] +=  -=  *=  /=  %=

 

  赋值表达式:

    变量 += 表达式

  相当于:变量 = 变量 + 表达式

    例子:a += 10 相当于 a = a + 10

  [功能]在变量a原值的基础上累加一个值

  [值]    整个表达式的值是左边变量被赋值以后的值

  [注]    赋值号左边必须是变量

 

四.[逗号运算符] ,

 

  逗号表达式:

    表达式1,表达式2,表达式3......

    例子:a,10

  [功能]从左到右,依次计算每一个表达式的值

  [值] 逗号表达式 整体的值是 最右边表达式的值

 

五.[关系运算符]  <  <=  >  >=  ==  !=

 

  关系表达式:

    表达式1 < 表达式2

  [功能]计算运算符左右两边的表达式的值,比较大小

  [值]    关系表达式 所表示的关系成立,整个表达式的值称为逻辑“真”,对应数字1

    关系表达式  所表示的关系不成立,整个表达式的值称为逻辑“假”,对应数字0

  关系运算符构成的表达式 往往和if语句(流程控制语句)结合起来使用

 

六.[自增/自减运算符]  ++  - -  

 

  自增表达式:变量++    ++变量

  自减表达式:变量- -     - -变量

  [功能]不论是自增表达式还是自减表达式,都是对变量本身进行加减操作

  变量++,++变量,都是让变量自身的值加1

  变量- - , - -变量,都是让变量自身的值减1

  [值] 作为自增、自减,表达式是有值的

  变量++,[先取值,再++],先取的值 作为 整个表达式的值

  ++变量,[先++,再取值],后取的值 作为 整个表达式的值

 

七.[强制类型转换 - 运算符]

 

  (type)表达式

  [注]强制类型转换运算符 改变的只是表达式的值的类型

 

八.[三目运算符]  ?:

 

  单目运算符:只需要结合一个操作就可以构成合法表达式  ++  - -  &

  双目运算符:需要结合两个操作数才可以构成合法的表达式  +  -  *  /  %  +=

  三目运算符表达式: 

    表达式1?表达式2:表达式3

  [功能]先计算表达式1的值,根据表达式1的值的“真”、“假”(“真”为1,“假”为0),决定计算表达式2还是表达式3

  如果表达式1为“真”,计算表达式2的值,表达式3被忽略

  如果表达式1为“假”,计算表达式3的值,表达式2被忽略

  [值] 如果表达式1的值为“真”,执行表达式2,表达式2的值作为整个表达式的值

  如果表达式1的值为“假”,执行表达式3,表达式3的值作为整个表达式的值

 

九.[逻辑运算符] &&  ||  !

 

[与表达式]

    表达式1&&表达式2

  [功能] 根据&&左右两边表达式的值判断总表达式的值是否为“真”

  [值]

     表达式1 表达式2 总表达式

    真

    假

    真

    假

  [注] 左右两个表达式的值,有一个为“假”,结果就为“假”

  [注] 实际在程序中,当左边的表达式1为“假”时,总表达式立即为“假”,表达式2被忽略(短路)

[或运算符]  ||  读作“或者”

  或表达式:

    表达式1||表达式2

  [功能]  从左到右依次计算每个表达式的值,根据两个表达式的值,决定总表达式的值的“真假”

  [值]

    表达式1 表达式2 总表达式

    真

    假

    真

    假

  [注]  左右两个表达式有一个为“真”,结果就为“真”

  [注]  在实际的开发中,当左边表达式1为“真”时,总表达式就为“真”,表达式2被忽略(短路)

[非运算符]  !

  非表达式:

    !表达式

  [功能]  计算表达式的值,然后取反(“假”变“真”,“真”变“假”)

  [值]    

    表达式 总表达式

    真     假

    假     真

 

[总结] 在一个表达式中,如果有多个运算符,优先级高的运算符优先和操作数结合

  分析任何一个表达式,首先要分清运算符的优先级,然后优先级高的优先结合,最后再去运算

转载于:https://www.cnblogs.com/firstsky/p/5374718.html

你可能感兴趣的文章
Hibernate注解使用以及Spring整合
查看>>
图片 base64转byte[]
查看>>
游标与变量关联。
查看>>
从指定的URL下载文件
查看>>
windows下安装php真正的多线程扩展pthreads教程
查看>>
jquer之ajaxQueue简单实现
查看>>
01《需求模式——软件建模与分析》
查看>>
SAP月结操作讲解
查看>>
CLR执行模型与常见的几个概念
查看>>
linux和aix内核参数检查
查看>>
JAVA 注解教程(一)简单介绍
查看>>
zepto源码学习-02 工具方法-详细解读
查看>>
图 - 从零开始实现by C++
查看>>
R & ggplot2 & Excel绘图(直方图/经验分布图/QQ图/茎叶图/箱线图)实例
查看>>
java 入门常识
查看>>
为 iTween 指定特定的回调 : onupdate, oncomplete
查看>>
最小化功能区:显露无遗
查看>>
unity3d Resources.Load动态加载资源
查看>>
Servlet 学习(一)
查看>>
HDU_oj_2049 考新郎
查看>>