繁体   English   中英

C编程中的运算符优先级

[英]Operators precedence in C Programming

我目前正在学习C编程(我的第一门编程语言)。 我对运算符的优先级有些困惑。 算术运算符的优先级如下。

  1. *
  2. /
  3. %
  4. +
  5. -

至少这是我书中给出的。 我很困惑的是,在理论考试中我该如何解决表达式? 我试图用上面给定的顺序解决许多表达问题,但未能获得正确答案。

给出以下定义:

int a = 10, b = 20, c;

我们将如何解决这个表达?

a + 4/6 * 6/2 

这是我书中的一个例子。

/*的优先级在C中相同,就像在数学中一样。 问题在于,在数学中,以下表达式是等效的,而在C中,它们可能不是:

(a/b) * (c/d)
(a/b*c) / d

它们在C中不等效,因为如果abcd是整数,则/运算符表示整数除法(它仅得出结果的整数部分)。

例如,

(7/2)*(4/5); //yelds 0, because 4/5 == 0
(7/2*4)/5; //yields 2

一般的良好编码习惯是明确说明您的意图。 如有疑问,请特别加上括号。 有时即使您不在。

    a + 4/6 * 6/2 
 = 10 + 4/6 * 6/2
 = 10 + 0*6/2
 = 10 + 0/2
 = 10

请注意,由于使用了整数除法,因此4/6计算为0

一种安全的实际解决方案是始终使用括号()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM