我目前正在學習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