算术运算符和算术表达式(优先级,结合性等)
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的值
那么怎么才能得到第二个值呢?在外面加个括号
以上是关于算术运算符和算术表达式(优先级,结合性等)的主要内容,如果未能解决你的问题,请参考以下文章
java中的栈Stack的基本使用和应用 ——利用栈计算合法的算术表达