• 问题总会出现,不过解决问题的方法也会出现!!!

C语言基础学习笔记06

学习笔记 小雨 611次浏览 已收录 0个评论

—— ——-

2-运算符的概念及分类

  1. 基本概念

运算符是告诉编译程序执行特定算术或逻辑操作的符号。

C语言基础学习笔记06

  1. 分类

按照功能划分:算术运算符、关系运算符与逻辑运算符、按位运算符

运算符根据参与运算的操作数分为:单目运算、双目运算、三目运算

单目运算符:只有一个操作数,如:i++,!,sizeof

双目运算符:有两个操作数,如:a+b

三目运算符:C语言中只有一个,称为问号表达式: a>b?1:0

C语言基础学习笔记06

3-运算符的优先级及结合性

  1. 结合性

C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x+y+z则y应该先与”-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为”左结合性”。而自右至左的结合方向称为”右结合性”。最典型的右结合性运算符是赋值运算符。如x=y=z,由于”=”的右结合性,应先执行y=z再执行x=(y=z)运算。

  1. 优先级

C语言中,运算符的优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先与优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

C语言基础学习笔记06

 

C语言基础学习笔记06

4-算术运算符介绍及用法

  1. 算术运算符包括:

C语言基础学习笔记06

  1. 算术运算符的结合性和优先级

结合性:从左到右

优先级: (1)* / %优先级大于+ –

(2)优先级相同则左结合计算

例如:int a=10,b=3c=-1;

c=a*3/5+4*b-3*2;

5-求余运算符使用注意

  1. 关于取余运算
  2. 参与运算的必须是整数

10%2        20%3

注意:

m%n 求余,相当于m/n获取余数

  1. n等于0无意义
  2. m等于0结果为0
  3. m>n正常求余   如:8%3=2
  4. m<n结果是m   如:2%4=2,1%4=1,3%8=3
  1. 运算结果的正负性取决于第一个运算数,跟后面的运算数无关

m%n

  1. m和n不能为小数
  2. m<0,则结果为负
  3. n<0,则正负性取决于m,m>0为正,m<0为负,与n正负无关

 

6-算术运算符中类型转换问题

  1. 类型转换问题

类型转换分为:隐式数据类型转换(自动转换)和显示数据类型转换(强制类型转换)

C语言基础学习笔记06C语言基础学习笔记06

  1. 自动转换(隐式转换):

自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。

自动转换遵循以下规则:

  1. 若参与运算量的类型不同,则先转换成同一类型,然后进行计算。
  2. 转换数据长度增加的方向进行,以保证精度不降低。

如:int型和long型运算时,先把int量转成long型后再进行运算。

  1. 所有的浮点运算都是以双精度进行的,即使仅含float单精度运算符的表达式,也要先转换成double型,再作运算。
  2. char型和short型参与运算时,必须先转换成int型。
  3. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

C语言基础学习笔记06

int i=1;i=i+9.801;

按照隐式处理方式,在处理i=i+9.801时,首先i转换为double型,然后进行相加,结果double型,再将double型转换为整型赋值给i

C语言基础学习笔记06

  1. 显示转换(强制类型转换)

C语言基础学习笔记06

C语言基础学习笔记06

7-赋值运算符

1、什么是表达式?

将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义的式子称为表达式。

例如:算术表达式、逻辑表达式、字符表达式等。

表达式可以是常量也可以是变量或算式,在表达式中又可分为:算术表达式、逻辑表达式和字符串表达式。

表达式的特点:

表达式是一个有意义的式子,所以一定有返回值

表达式语句后面加上“;”分号,构成表达式语句

  1. 赋值运算符

赋值运算符记为”=”,由”=”连接的式子称为赋值表达式。

其一般形式为:变量=表达式

注意:等号的左侧必须是一个变量

C语言基础学习笔记06

  1. 赋值表达式

在C中,把“=”定义为运算符,从而组成赋值表达式。

凡是表达式可以出现的地方均可出现赋值表达式。

如:x=a+b;w=sin(a)+sin(b);y=i+++- -j;

赋值表达式的功能是计算表达式的值再赋予左边的变量。

赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。

 

8-复合赋值运算符

  1. 复合的赋值运算符

在赋值符“=”之前加上其它二目运算符可构成复合赋值符。

/=除后赋值       变量/=表达式          如:a/=3;即a=a/3;

*=乘后赋值      变量*=表达式                   如:a*=3;即a=a*3;

%=取余后赋值          变量%=表达式        如:a%=3;即a=a%3;

+=加后赋值      变量+=表达式                   如:a+=3;即a=a+3;

-=减后赋值       变量-=表达式          如:a-=3;即a=a-3;

构成复合赋值表达式的一般形式为:

变量 双目运算符=表达式;

9-自增、自减运算符

  1. 运算符介绍

在程序设计中,经常遇到”i=i+1”和”i=i-1”这两种极为常用的操作。C语言为这种操作提供了两个更为简洁的运算符。即“++”和“- -”,分别叫做自增运算符和自减运算符。它们是单目运算符,是从右向左结合的算术运算符。

  1. 自增、自减运算符求值过程
  2. 前缀表达式:++x,- -x;其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表达式的值;即“先变后用”,也就是变量的值先变,再用变量的值参与运算。
  3. 后缀表达式:x++、x- -;先用x的当前值作为表达式的值,再进行自增自减1运算。即“先用后变”,也就是先用变量的值参与运算,变量的值再进行自增自减变化。

C语言基础学习笔记06

  1. 自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整数、实型,还是字符型变量等,但不能用于表达式或常量。

如:++(a+b),const int N=0;N++;等都是错误的

而i+++j+++、++i+(++j)、++a+b++、++array[- -j]等,这些都是合法的。

10-自增、自减运算符掌握技巧

  1. 运算符优先级和结合性

优先级:第二级

结合性:右结合

编译器对程序编译时,从右到左可能多地将字符组合成一个运算符或标识符,因此i+++j++等效于(i++)+(j++),连个“++”作用的对象都是变量,这是合法的;

注意:不管是“++”在前还是在后,最后变量的值都会+1

  1. 技巧

i++,先看到的是变量,表达式的值就是变量的值

++i,先看到的是++,先让i的值+1

C语言基础学习笔记06


本博客内容既有转载自网络的内容,也有本作者原创内容,仅供学习与交流之用
如有侵权或者错误之处,请及时在下方留言!
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址