在C语言中运算符的运算顺序是如何的?

Python014

在C语言中运算符的运算顺序是如何的?,第1张

运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。取模运算符(%)用于计算两个整数相除所得的余数。例如:

a=7%4

最终a的结果是3,因为7%4的余数是3。

那么有人要问了,我要想求它们的商怎么办呢?b=7/4

这样b就是它们的商了,应该是1。

也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。

那么怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:a=(int)(7.0/4)

因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下

a=(float)(7/4)

最终a的结果是多少?

单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。单目加运算符没有意义,纯粹是和单目减构成一对用的。

先b*c,乘除优先于加减

优先级 运算符 名称或含义 使用形式 结合方向 说明

1 [] 数组下标 数组名[常量表达式] 左到右

() 圆括号 (表达式)/函数名(形参表)

. 成员选择(对象) 对象.成员名

-> 成员选择(指针) 对象指针->成员名

2 - 负号运算符 -表达式 右到左 单目运算符

(类型) 强制类型转换 (数据类型)表达式

++ 自增运算符 ++变量名/变量名++ 单目运算符

-- 自减运算符 --变量名/变量名-- 单目运算符

* 取值运算符 *指针变量 单目运算符

& 取地址运算符 &变量名 单目运算符

! 逻辑非运算符 !表达式 单目运算符

~ 按位取反运算符 ~表达式 单目运算符

sizeof 长度运算符 sizeof(表达式)

3 / 除 表达式/表达式 左到右 双目运算符

* 乘 表达式*表达式 双目运算符

% 余数(取模) 整型表达式/整型表达式 双目运算符

4 + 加 表达式+表达式 左到右 双目运算符

- 减 表达式-表达式 双目运算符

5 << 左移 变量<<表达式 左到右 双目运算符

>> 右移 变量>>表达式 双目运算符

6 > 大于 表达式>表达式 左到右 双目运算符

>= 大于等于 表达式>=表达式 双目运算符

< 小于 表达式<表达式 双目运算符

<= 小于等于 表达式<=表达式 双目运算符

7 == 等于 表达式==表达式 左到右 双目运算符

!= 不等于 表达式!= 表达式 双目运算符

8 & 按位与 表达式&表达式 左到右 双目运算符

9 ^ 按位异或 表达式^表达式 左到右 双目运算符

10 | 按位或 表达式|表达式 左到右 双目运算符

11 && 逻辑与 表达式&&表达式 左到右 双目运算符

12 || 逻辑或 表达式||表达式 左到右 双目运算符

13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符

14 = 赋值运算符 变量=表达式 右到左

/= 除后赋值 变量/=表达式

*= 乘后赋值 变量*=表达式

%= 取模后赋值 变量%=表达式

+= 加后赋值 变量+=表达式

-= 减后赋值 变量-=表达式

<<= 左移后赋值 变量<<=表达式

>>= 右移后赋值 变量>>=表达式

&= 按位与后赋值 变量&=表达式

^= 按位异或后赋值 变量^=表达式

|= 按位或后赋值 变量|=表达式

15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算

说明:

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

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

参考自:http://zhidao.baidu.com/question/355007268.html

你可以看下百度经验的这篇:http://jingyan.baidu.com/article/455a9950e3dfe5a16727785d.html