C语言知识点(3)-运算符与表达式

运算符与表达式

算数运算符

算术:+,-,*,/,%

 考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.

  “/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是1.5

 %符号两边要求是整数。不是整数就错了。

赋值运算符

赋值运算符:=

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

赋值的左边只能是一个变量。

自增、自减运算符

自加表达式:++

自减表达式:++

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

关系表达式

关系运算符:> ,<,=,>=,<=,!=

关系运算符号:注意<=的写法,==和=的区别!

1)关系表达式:

   a、表达式的数值只能为1(表示为真),或0(表示假)。

如 9>8这个关系表达式是真的,所以9>8这个表达式的数值就是1。

如 7<6这个关系表达式是假的,所以7<6这个表达式的数值就是0

   b、考试最容易错的:就是int x=1,y=0,z=2;

                          x<y<z是真还是假?带入为1<0<2,从数学的角度出发肯定是

错的,但是如果是C语言那么就是正确的!因为要1<0为假得到0,表达式就变成

了0<2那么运算结果就是1,称为了真的了!

   c、等号和赋值的区别!一定记住“=”就是赋值,“= =”才是等号。虽然很多人可以背

诵,但我依然要大家一定好好记住,否则,做错了,我一定会强烈的鄙视你!

 

 

逻辑运算

运算符:&&   ||   ! 三种逻辑运算

注意:C语言中是用非0表示逻辑真的,用0表示逻辑假的。

位运算

位运算符:& , | ,  ^ , ~ , << , >>

表达式:

在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

逗号运算符

逗号运算符: ,

逗号表达式:用逗号连接起来的一串表达式 3,4,9,12

优先级别最低。表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

 z=(2,3,4)(整个是赋值表达式) 这个时候z的值为4。(有点难度哦!)

  z=  2,3,4 (整个是逗号表达式)这个时候z的值为2。

强制类型转换

强制类型转换:(type)

  一定是 (int)a 不是  int(a),注意类型上一定有括号的。

 

运算符的优先级

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[整型表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-算术类型表达式

右到左

单目运算符

(type)

强制类型转换

(纯量数据类型)纯量表达式

 

++

自增运算符

++纯量类型可修改左值表达式

单目运算符

--

自减运算符

--纯量类型可修改左值表达式

单目运算符

*

取值运算符

*指针类型表达式

单目运算符

&

取地址运算符

&表达式

单目运算符

!

逻辑非运算符

!纯量类型表达式

单目运算符

~

按位取反运算符

~整型表达式

单目运算符

sizeof

长度运算符

sizeof 表达式

sizeof(类型)

 
3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式%整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

整型表达式<<整型表达式

左到右

双目运算符

>>

右移

整型表达式>>整型表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

整型表达式&整型表达式

左到右

双目运算符

9

^

按位异或

整型表达式^整型表达式

左到右

双目运算符

10

|

按位或

整型表达式|整型表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

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

右到左

三目运算符

14

=

赋值运算符

可修改左值表达式=表达式

右到左

 

/=

除后赋值

可修改左值表达式/=表达式

 

*=

乘后赋值

可修改左值表达式*=表达式

 

%=

取模后赋值

可修改左值表达式%=表达式

 

+=

加后赋值

可修改左值表达式+=表达式

 

-=

减后赋值

可修改左值表达式-=表达式

 

<<=

左移后赋值

可修改左值表达式<<=表达式

 

>>=

右移后赋值

可修改左值表达式>>=表达式

 

&=

按位与后赋值

可修改左值表达式&=表达式

 

^=

按位异或后赋值

可修改左值表达式^=表达式

 

|=

按位或后赋值

可修改左值表达式|=表达式

 

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序结合

说明:

同一优先级的运算符,结合次序由结合方向所决定。

简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

举例及说明

  • int x=y=10: 错,定义时,不可以连续赋值。
  • 连续赋值

int x,y;

x=y=10;   对,定义完成后,可以连续赋值。

  • int x=7.7;对,x就是7

float y=7;对,x就是7.0

  • 强制类型转换

   注意(int)(a+b) 和(int)a+b 的区别。前是把a+b转型,后是把a转型再加b。

猜你喜欢

转载自blog.csdn.net/findee/article/details/84998865