C语言中的运算符与表达式--C语言03

C语言中的运算符

一、常用运算符分类

运算符类型 作用
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋值给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于根据表达式的值返回真值或假值
位运算符 用于处理数据的位运算
sizeof运算符 用于求字节数长度

二、常用运算符

  算术运算符:

运算符 术语 示例 结果
+(-) 正号(负号) +1(-1) 1(-1)
+(-) 加(减) 1+1(1-1) 2(0)
*(/) 乘(除) 1*1(1/1) 1(1)
% 取余 3%2 1
++ 前自增 int a=1;int b=++a; a=2;b=2
后自增 int a=1;int b=a++; a=2;b=1
-- 前自减 int a=1;int b=--a; a=0;b=0
后自减 int a=1;int b=a--; a=0;b=1

  赋值运算符:

运算符 术语 示例 结果
= 赋值 int a=1; a=1
+= 加等于 int a=2;a+=1; a=3;
-= 减等于 int a=2;a-=1; a=1;
*= 乘等于 int a=2;a*=2; a=4;
/= 除等于 int a=2;a/=2; a=1;
%= 模等于 int a=3;a%=2; a=1

  比较运算符:

    C 语言的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示。

运算符 术语 示例 结果
== 等于 2==2 1(真)
!= 不等于 2!=2 0(假)
< 小于 1<2 1
> 大于 1>2 0
<= 小于等于 1<=2 1
>= 大于等于 1>=2 0

  逻辑运算符:

运算符 术语 示例 结果
! !a

如果a为假,则!a为真;

如果a为真,则!a为假。
&& a&&b 如果a和b都为真,则结果为真,否则为假。
|| a||b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。

三、运算符的优先级

优先级 运算符 名称(含义) 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右 ----
() 圆括号 (表达式)或函数名(形参列表)
. 成员选择(对象) 对象.成员变量名
-> 成员选择(指针) 对象指针->成员变量名
2 - 负号运算符 -表达式 右到左 单目运算符
~ 按位取反运算符 ~表达式
++ 自增运算符 ++变量名/变量名++
-- 自减运算符 --变量名/变量名--
* 取值运算符 *指针变量
& 取地址运算符 &变量名
! 逻辑非运算符 !表达式
(类型) 强制类型转换 (数据类型)表达式 ----
sizeof() 长度运算符 sizeof(表达式) ----
3 / 表达式/表达式 左到右 双目运算符
* 表达式*表达式
% 取余 整型表达式%整型表达式
4 + 表达式+表达式 左到右 双目运算符
- 表达式-表达式
5 << 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式
< 小于 表达式<表达式
<= 小于等于 表达式<=表达式
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式
8 & 按位与 表达式&表达式 左到右 双目运算符
9 ^ 按位异或 表达式^表达式 左到右 双目运算符
10 | 按位或 表达式|表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符

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

左到右 三目运算符
14 = 赋值运算符 变量=表达式 右到左
----
/= 除后赋值 变量/=表达式 ----
*= 乘后赋值 变量*=表达式 ----
%= 取模后赋值 变量%=表达式 ----
+= 加后赋值 变量+=表达式 ----
-= 减后赋值 变量-=表达式 ----
<<= 左移后赋值 变量<<=表达式 ----
>>= 右移后赋值 变量>>=表达式 ----
&= 按位与后赋值 变量&=表达式 ----
^= 按位异或后赋值 表达式&&表达式 ----
!= 按位或后赋值 表达式||表达式 ----
15 , 逗号运算符 表达式,表达式,… 左到右 ----


C语言中的类型转换

转换的方法有两种:

  自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。

  强制类型转换:把表达式的运算结果强制转换成所需的数据类型。

         强制类型转换格式:(类型说明符) (表达式) 例如:float a=3.14f;  int b=(int)a;

类型转换的原则:

  占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

       

 

猜你喜欢

转载自www.cnblogs.com/write-down/p/12897282.html