C语言第二章:运算符

来源:互联网 发布:西西网络图绘制软件 编辑:程序博客网 时间:2024/05/19 11:49

一、运算符的概念及分类
1、 运算符是告诉编译程序执行特定算数或逻辑操作的符号。
2、 分类
i、 功能:算数运算符,关系运算符与逻辑运算符,按位运算符
ii、 运算符根据参与运算的操作数的个数分为:单目运算符。双目运算符,三目运算
3、 运算符的优先级,结合性
a、 优先级分为15级
b、 结合性按照运算符的结合性的方向处理
2、 算数运算符
1、 包括:+ - * / % 注意他们的结合方式,都是双目运算符 %取余参与运算的数必须是整数,不能是其他的数
2、 注意除法的数据格式,如果两个操作数都是整数则结果也是整型
3、 算数运算符的优先级:
i、* / % 优先级比 + - 高一级 位于 第三级 ,优先级相同根据左结合
ii、求余运算的注意:

a、  规则  a1m%n m除以n以后,取的余数部分,如10 % 4=2a2m 可以等于0n不能等于0  m> n 正常的求余m<n 结果就是m 注意:1)求余不可以使用实数(小数)    2m<0 结果是负数    3)m>0 n< 0 结果是正数 ,结果的正负型只和左边有关,只和m有关 4、算数运算符的类型转换问题    1、分为:(自动)隐式类型转换和(显式)强制转换

2、(显式)强制转换 float f=34.8989; int i=(int)f
; //结果是34
根据数据的大小区转换。
注意事项:
1)。用一个大数加上一个小数,会丢失精度
2)数据转换是一种临时转换,不会改变他的数据

3、 赋值运算符
1、 什么是表达式?
答:用运算符按一定的规则链接起来,有意义的式子叫做表达式
2、 分类:算数表达式,关系表达式,逻辑运算符
注意:表达式一定要返回值
表达��式语句:表达式后面加上分号,构成表达式
3、 作用:把符号右侧的值给等号左边的变量-
4、 优先级(14级)
5、 结合性(自右向左结合)
注意:int a=b=c=10;//是错误的
答题的方式:先看数的优先级、在看他们的结合性
6、 复合赋值运算符:+= -+ *= /= %=
a、 先运算在赋值
b、 int z=4;z*=z+3;/ /z的结果是28,注意这个问题
4、 自增++,自减– 运算符
单目运算符 ,右结合的方向
++i前缀表达式,先运算在赋值
i++先赋值在运算

口诀:++a 先加后用
a++先用后加
注意:不管是a++还是++a 他们 a的值都会 +1
1)、自增自减不能用在常量上,如++5;++(a+3)

2.执行以下语句后,y 的值为(a)。
int x,y,z;
x=y=z=0;
++x || ++y && ++z;//因为||是短路或,只要前面的是真则不判断后面的数
A.0 B.1 C.2 D.不确定值

5、 sizeof运算符
sizeof是一种单目运算符
作用:计算常量,变量。数据结构在内存中占用的字节数
*、sizeof在常量的使用:
1、 sizeof(1)//计算常量1 在内存中占用的字节数 4
2、 sizeof(2.3f)//计算float类型的常量在内存中占用的字节数 4
3、 sizeof(3.25) //字节数 8
4、 sizeof(‘a’) //字节数 字符常量 4 字符变量 1个
4.1、 char类型的常量存储,在内存中是以它对应的ascII值存储97 int 存储。
4.2、 char 类型的变量是以把字符串的ASCII码转换为二进制(1字节)进行存储。
*2、用sizeof运算符计算变量在内存中占用的字节数
2.1、int a=10;
sizeof(a);//计算int类型变量占用的字节

注意点:sizeof用在常量和变量的时候是可以省略括号的 sizeof 10;
2.2、sizeof用于计算某一种数据类型在内存中占用的字节数
sizeof(int);//表示int类型的数据在内存中占用的字节数 4
sizeof(float);//表示float类型的数据在内存中占用的字节数 4
sizeof(double);//表示double类型的数据在内存中占用的字节数 8
sizeof(char);//表示char类型的数据在内存中占用的字节数 1-→表示字符变量
注意点:sizeof用在字符类型的时候是不可以省略括号的 sizeof(int);
6、 逗号运算符(最低的运算符)
1、 求值过程:(表达式1,表达式2,表达式3 ) 计算每一个表达式的值,并以最后一个表达式的值作为整个逗号表达式的最终值。
2、 概念:“,”是一个逗号运算符,逗号表达式就是用逗号链接的表达式
3、 int
a=4,b=5,result=0;
result=(a+4,b+3,a+b
);
结果就是:a+b等于result=9
2)、result=a+4,5+b,a+b;
结果是:result=a+4;//等于8;
4、 逗号运算符的使用注意:
a) 逗号运算符可以嵌套使用 result=(a++,(b+5,5+6,z=a+b));//结果是6;
b) a++,b++;这也是逗号表达式=⇒a++;b++;//简化代码
c) 我们并不在意整个逗号表达式的结果,看中的是求值过程中各个变量的值的变化。
d) 并不是所有出现逗号的地方都可以组成表达式,比如定义变量的时间。

7、 关系运算符(返回的要么是真,要么是假)
1、 非零即 1真,只有0为假
2、 比较两个数或者两个表达式之间的关系
分类:>, <, >=, <=, == ,!=
结合性:
3、 关系表达式的值:1 ,0左结合(只有优先级相同的情况下才可以说结合性)
4、 关系运算符的优先级 > >= < <= == != 优先级由高到低。//一个=表示赋值,两个==表示等于。
8、 逻辑运算符 && || !
1、 逻辑表达式的一般形式:表达式 逻辑运算符 表达式
2、 逻辑表达式的值:0 1
3、 逻辑与 && (表示多个条件同时成立, “并且” “同时” “且”)左结合
4、 逻辑或 || (多个条件只要有一个成立就可以了,“或者”)左结合
5、 逻辑非 ! (取反) int a=3; result=!a;//result=0;!的优先级比较高
!结合性:右结合性 a&&b&&c 这个类型也是可以的
注意逻辑运算符的短路问题:只要可以判断出来,后面的就不判断了

9、 三目运算符 表达式?表达式1:表达式2;//条件表达式
1、int a,b;
max=a>=b?a:b;//这就是一个三目运算符
注意:在if语句中如果不适用{},则只能有一句的属于if,也就是说只有一个分号结尾是if的判断体。比如:if (x==y) t=x; x=y; y=t;//if (x==y) t=x; x=y; y=t;相当于 if(x==y){t=x;} x=y; y=t;

0 0