21xrx.com
2024-12-22 23:40:54 Sunday
登录
文章检索 我的文章 写文章
c语言表达式是从左往右还是从右往左计算的呢
2023-06-17 11:48:49 深夜i     --     --
c语言表达式 运算符优先级 结合性 左结合 右结合 赋值运算符 类型转换

c语言表达式是从左往右还是从右往左计算的呢?这是一个广为争议的问题。有些人认为c语言表达式是从左往右计算的,而另一些人则认为c语言表达式是从右往左计算的。实际上,这个问题的答案是有点复杂的,因为它涉及到c语言的运算符优先级、结合性和类型转换等问题。

首先,我们来看一下c语言中的运算符优先级和结合性。c语言中的运算符优先级从高到低依次为:

1. ( ):圆括号内的表达式优先计算

2. ++,--:自增和自减运算符

3. !,~:逻辑非和位取反运算符

4. *,/,%:乘法、除法和求余运算符

5. +,-:加法和减法运算符

6. <<,>>:位左移和位右移运算符

7. < ,<=,>,>=:关系运算符

8. ==,!=:等于和不等于运算符

9. &:按位与运算符

10. ^:按位异或运算符

11. |:按位或运算符

12. &&:逻辑与运算符

13. ||:逻辑或运算符

14. ?::条件运算符

15. =,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=:赋值运算符

运算符的结合性是指多个相同优先级的运算符出现时,计算的顺序是从左往右还是从右往左。c语言中的运算符结合性可以分为左结合和右结合两种。左结合的运算符从左往右计算,右结合的运算符从右往左计算。c语言中只有一个右结合的运算符:赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=)。所有其他的运算符都是左结合的。

有了运算符优先级和结合性的基础,我们来看一下c语言表达式的计算顺序。c语言的表达式计算顺序是从左往右的,但是有一些例外。以下是c语言表达式计算顺序的规则:

1. 如果表达式中包含圆括号,则圆括号内的表达式优先计算。

2. 如果表达式中包含多个相同优先级的左结合运算符,则计算顺序是从左往右。

3. 如果表达式中包含多个相同优先级的右结合运算符,则计算顺序是从右往左。

4. 如果表达式中包含多个不同优先级的运算符,则按照运算符优先级从高到低依次计算。

5. 如果表达式中包含类型转换,则按照c语言的类型转换规则进行计算。

综上所述,c语言表达式的计算顺序是从左往右,但是有一些例外。例如,赋值运算符是右结合的,计算顺序是从右往左。当表达式包含不同优先级的运算符时,要按照运算符优先级从高到低依次计算。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复