2012-02-03 44 views
1

我目前正在学习C编程(我的第一种编程语言)。 我有点困惑与运营商的优先权。算术运算符的优先顺序如下。C编程中的运算符优先

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

这就是在我的书至少给出。 我感到困惑的是如何在我的理论考试中解决表达问题? 我试着用上面给出的命令解决很多问题,但是没有得到正确的答案。

给出如下定义:

int a = 10, b = 20, c; 

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

a + 4/6 * 6/2 

这是我书中的一个例子。

+0

我从来没有听说过\运算符。你确定你在学习C而不是PHP吗? – 2012-02-03 11:02:43

+0

@KerrekSB该死!那应该是'/'。对不起,感到困惑。从早上开始学习。 – 912M0FR34K 2012-02-03 11:03:57

+2

@ 912M0FR34K:然后是休息时间了!编程主要是关于迂腐和注重细节。散步并喝杯咖啡,之后会更容易。 – 2012-02-03 11:11:01

回答

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

注意,作为整数除法用于4/6评估为0

+1

啊,这就是OP“解决表达”的意思! :D +1 – 2012-02-03 11:15:13

2

一个安全的现实生活的解决方案是始终使用括号()

+0

那是我制作节目的时候。但是我可以简单地在我的考卷上添加圆括号? 尽管感谢您的建议。赞赏。 – 912M0FR34K 2012-02-03 11:12:13

+0

我会在考试中添加他们:) – andreadi 2012-02-03 11:14:57

4

/*的优先级在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 

一般好的编码做法正在明确对你的意图。特别是在有疑问时加上括号。有时甚至当你不是。