算术运算符和算术表达式(优先级,结合性等)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算术运算符和算术表达式(优先级,结合性等)相关的知识,希望对你有一定的参考价值。

%  得到余数  7 % 2 得到1

运算符的优先级

C语言中,运算符的运算优先级共分为15级。1级最高, 15级最低。在表达式中, 优先级较高

的先于优先级较低的进行晕死。而在一个运算量两侧的运算符优先级相同时, 则按运算符的

结合性所规定的结合方向处理。

运算符的结合性

c语言中各运算符的结合性分为两种, 即左结合性(自左至右)和右结合性(自右至左)。

例如:

左结合性:

算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”结合,执行

x-y,在+z的yuns。这种是左结合性。

 

右结合性:

例如:

最典型的右结合性运算符是赋值运算符。如x=y=z, 由于=的右结合性, 应先执行y=z, 

在执行x=, 可以理解为x=(y=z)的运算。

c语言运算符中有不少为右结合性, 应注意区别,避免理解错误。

自增、自减运算符

自增1:自增1运算符记为++, 其功能是使变量的值自增1

自减1:自减1运算符记为--, 其功能是使变量值自减1.

自增1, 自减1运算符均为单目运算, 都具有右结合性。可有一下几种形式:

++i       i自增1后在参加其他运算。
--i          i自减后在参与其他运算
i++         i参与运算后, i的值在自增1
i--            i参与运算后, i的值在自减1
void main()
{
    int i, j;
    i = 5;
    j = i++;
    printf("%d, %d", i, j); #注意, 如果是-i++ 呢?结果是-6
}

// i 的值为6, j 为5

增加难度

思路:

 i = 5, 然后i++ , 在i-- 这时候i是5, 然后-i 也就是-5 -- 也就是-6了 

 

 逗号运算符和逗号表达式

在c语言中逗号“,”也是一种运算符, 称为逗号运算符。其功能是把两个表达式连接起来组成

一个表达式, 成为逗号表达式。

其一般形式为:

表达式1, 表达式2

其求值过程是分别求两个表示式的值, 并以表达式2的值作为整个逗号表达式的值。

注意了,而实际得到的是表达式1的值

 

那么怎么才能得到第二个值呢?在外面加个括号

 

以上是关于算术运算符和算术表达式(优先级,结合性等)的主要内容,如果未能解决你的问题,请参考以下文章

C语言运算的优先级别和结合方向表是啥的?

逆波兰算术表达式 C语言

放假只能打游戏?我们还可以学习操作符的性质

java中的栈Stack的基本使用和应用 ——利用栈计算合法的算术表达

MySQL运算符,SQL,算术比较逻辑位,优先级,正则表达式,完整详细可收藏

栈的应用—算术表达式求值