2011-02-25 93 views
1

我學習C語言和我有一些問題如下:(對不起,如果這些都傻的)關於C中關係運算符的問題?

我使用的開發-C++ 4.9.9.2運行一些例子:

int m=3, n=4, k = 2; 
(1) printf("%d", k<m<n); => this one prints 1 
(2) printf("%d", k>m>n); => this one prints 0 
(3) printf("%d", m<n>k); => this one prints 0 

正如本書說:「零值代表虛假,任何其他值代表真實。」 那麼,爲什麼陳述(3)打印0(假)。我認爲它應該是1,或者我在這裏錯過了什麼?

有誰能給我一個清楚的解釋嗎?

非常感謝。

回答

8

根據C的優先規則,m<n>k被解釋爲(m<n)>k(您的其他示例遵循相同的形式)。 m<n是真實的,因此評估爲1.然後該語句實際上是1>k這是錯誤的,因此爲0.

+0

僅僅用於添加,即使指定了操作的順序,但是當事情模糊時,明確地分組,事實上,正如yan解釋你實際上首先計算'(k 2011-02-25 02:21:31

+0

+1,但這裏的關鍵是,不像Python,'x 2011-02-25 02:22:26