黑马程序员-c语言学习笔记-运算符

来源:互联网 发布:朋克 知乎 编辑:程序博客网 时间:2024/06/10 09:07
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1 运算符概念
1.1概念  运算符是指执行特定算数和逻辑操作的符号

1.2 分类
按功能            算数、关系、逻辑、按位运算符(二进制数据的运算)
按操作数         单目、双目、三目运算符(唯一的,也叫问号表达式     表达式1?表达式2:表达式3;  )


1.3 特征
优先级:有15级,第1级为最高
结合性:在运算符优先级相同的情况下,分左结合性(自左至右)和右结合性(自右至左,赋值运算符)

int a = b + 10;

如上,先执行+,自左向右,再执行=,自由向左

2 算数运算符
+     双目运算符  左结合性
-      双目运算符  左结合性(也可作为负值运算符,此时为单目运算符)
*      双目运算符  左结合性
/       双目运算符  左结合性(注意:如果参与运算量均为整型,则结果为整型;如果有一个为实型,则结果为实型)
%    求余运算符 双目 左结合(运算量要求为整型)
注意:求余规则  m%n
0%5  //m=0时,结果为0
5%0;  //n=0时,报错,n不可为0
7%5;  //m>n时,正常求余,结果为2
5%7;  //m<n时,结果为m,即5
//结果正负值与m相同

3  赋值运算符
3.1 表达式   用运算符按一定的规则连接起来的有意义的式子,表达式一定有返回值
3.2 赋值运算符=        优先级14级,将等号右侧的值给等号左侧的变量
int a1b1c1d1
a1 = b1 = c1 = d1 = 10;       //表达式语句,(a1 = (b1 = (c1 =( d1 = 10)))),a1结果为10
int a2 = b2 = c2 = 10;         //报错!!相当于( b2 = c2 = 10)来定义a2

3.3符合赋值运算符(双目运算符,先运算后赋值)
+=          a += 3;-------->a = a + 3;后面以此类推 
-=
*=
/=
%=

4 自增自减运算符(单目,右结合性)
++       
--
注意:单个变量,不能用于常量
++(a + 3);         //不行,(a + 3)为表达式,一定有返回值
4.1 前缀表达式
++x
--x
先变后用,先让x的值+1,再取出x的值作为表达式的值

4.2 后缀表达式
x++
x--
先用后变,先取出x的值作为表达式的值,再让x的值+1
int a = 3,result = 0;
result  =  a++;      //a=4 result=3
result  = ++a;       //a=4 result=4

int a  =  3,result =  0;
result = a+++a+++a++;     //result = (a++)+(a++)+(a++),在三个括号中,a的值分别4、5、6,括号内表达式的值分别为3、4、5


5  sizeof运算符
单目运算符,以字节的形式给出了其操作数的存储空间的大小,不是一个函数
用法:
sizeof(常量/变量/结构体名称)    //用在常量和变量时,可省略括号
也可用于计算一种数据类型在内存中的字节数

sizeofint);



6 逗号运算符
表达式1,表达式2
分别求两个表达式的值,并以最后一个表达式的值作为整个逗号表达式的值

注意:逗号表达式可以嵌套

7 关系运算符
>
<
>=
<=
==     判断两个值是否相等,此时应与=(赋值)区分开来
!=

注意:表达式若为真返回1,若为假返回0
int a = 3= 2result = -1
result = a > b < 2;           //a > b返回1,1< 2为真返回1


8 逻辑运算符
 && 与运算  参与运算的都为真才为真,左结合
 || 或运算  只要有一个为真即为真,左结合
 ! 非运算  取反,右结合
注意:逻辑运算符的短路问题
  A&&B 一假为假,如果A为假,B就不执行了,与短路
  A||B 一真为真,如果A为真,B就不执行了,或短路

9 三目运算符
格式    表达式1?表达式2:表达式3;
求值顺序 表达式1为真,则表达式2的值作为整个三目运算表达式的返回值
         表达式1为假,则表达式3的值作为整个三目运算表达式的返回值

a > b ? a : c > d ? c : d; //a > b ? a :( c > d ? c : d);右结合性

0 0