[英]Operators precedence in C Programming
我目前正在学习C编程(我的第一门编程语言)。 我对运算符的优先级有些困惑。 算术运算符的优先级如下。
*
/
%
+
-
至少这是我书中给出的。 我很困惑的是,在理论考试中我该如何解决表达式? 我试图用上面给定的顺序解决许多表达问题,但未能获得正确答案。
给出以下定义:
int a = 10, b = 20, c;
我们将如何解决这个表达?
a + 4/6 * 6/2
这是我书中的一个例子。
/
和*
的优先级在C中相同,就像在数学中一样。 问题在于,在数学中,以下表达式是等效的,而在C中,它们可能不是:
(a/b) * (c/d)
(a/b*c) / d
它们在C中不等效,因为如果a
, b
, c
和d
是整数,则/
运算符表示整数除法(它仅得出结果的整数部分)。
例如,
(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.