我目前正在学习C编程(我的第一种编程语言)。 我有点困惑与运营商的优先权。算术运算符的优先顺序如下。C编程中的运算符优先
*
/
%
+
-
这就是在我的书至少给出。 我感到困惑的是如何在我的理论考试中解决表达问题? 我试着用上面给出的命令解决很多问题,但是没有得到正确的答案。
给出如下定义:
int a = 10, b = 20, c;
如何将我们解决这个表情?
a + 4/6 * 6/2
这是我书中的一个例子。
我目前正在学习C编程(我的第一种编程语言)。 我有点困惑与运营商的优先权。算术运算符的优先顺序如下。C编程中的运算符优先
*
/
%
+
-
这就是在我的书至少给出。 我感到困惑的是如何在我的理论考试中解决表达问题? 我试着用上面给出的命令解决很多问题,但是没有得到正确的答案。
给出如下定义:
int a = 10, b = 20, c;
如何将我们解决这个表情?
a + 4/6 * 6/2
这是我书中的一个例子。
a + 4/6 * 6/2
= 10 + 4/6 * 6/2
= 10 + 0*6/2
= 10 + 0/2
= 10
注意,作为整数除法用于4/6
评估为0
。
啊,这就是OP“解决表达”的意思! :D +1 – 2012-02-03 11:15:13
一个安全的现实生活的解决方案是始终使用括号()
那是我制作节目的时候。但是我可以简单地在我的考卷上添加圆括号? 尽管感谢您的建议。赞赏。 – 912M0FR34K 2012-02-03 11:12:13
我会在考试中添加他们:) – andreadi 2012-02-03 11:14:57
的/
和*
的优先级在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
一般好的编码做法正在明确对你的意图。特别是在有疑问时加上括号。有时甚至当你不是。
我从来没有听说过\运算符。你确定你在学习C而不是PHP吗? – 2012-02-03 11:02:43
@KerrekSB该死!那应该是'/'。对不起,感到困惑。从早上开始学习。 – 912M0FR34K 2012-02-03 11:03:57
@ 912M0FR34K:然后是休息时间了!编程主要是关于迂腐和注重细节。散步并喝杯咖啡,之后会更容易。 – 2012-02-03 11:11:01