学编程的闹钟 发表于 2024-3-31 21:58

C语言运算符优先级和结合性

C语言运算符优先级和结合性运算符
在一个表达式中可能包含多个有不同运算符连接起来的或具有不同数据类型的数据对象,表达式有多种运算,不同的结合顺序可能得出不同结果或者出现运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性和唯一性。

每种同类型的运算符都有内部的运算符优先级,不同类型的运算符之间也有相应的优先级顺序。一个表达式中既可以包括相同类型的运算符,也可以包括不同类型的运算符或者函数。当多种运算符出现在同一个表达式中时,应该先按照不同类型运算符间的优先级进行运算。可以用括号改变优先级顺序,使得括号内的运算优先于括号外的运算。对于多重括号,总是由内到外强制表达式的某些部分优先运行。括号内的运算总是最优先计算。

优先级
优先级与求值顺序无关。优先级高低从上到下依次递减,表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

结合性
当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。大多数运算符结合方向是左结合性,只有三类运算符的结合方向是右结合性,即:单目运算符、条件运算符、赋值运算符。结合性是针对两个相邻的优先级相同的运算符而言,而不是表达中的运算对象,运算符是决定左右的基准点,先以前面的运算符构造运算,就是左结合性,反之,就是右结合性 。

操作数
运算符是一种特殊的函数,它们具有一个或多个操作数并返回相应的值。运算符可以是一目、二目或三目的,有多少目就代表有多少个操作数。只有一个运算符的操作数是三目运算符,即:条件运算符。


学编程的闹钟 发表于 2024-4-1 09:59

顶一下帖子
页: [1]
查看完整版本: C语言运算符优先级和结合性