2013-05-25 147 views
-3

我無法弄清楚,爲什麼這個代碼的結果是3程序中出現意外結果C

#include <stdio.h> 

main() 
{ 
    int x[] = {1, 3, 2, 4, 0}; 
    int y[] = {0, 2, 1, 5, 0}; 
    int i, br = 0; 

    for (i = 0; i < 5; i++) 
     if (x[i] = y[i]) 
      br++; 

    printf("%d\n", br);  
} 
+1

這是無效的C++。 – chris

+2

'a = b'確實具有將'b'分配給'a'的副作用,但它也是一個*表達式*,其評估結果爲'b'的值。如果'b'的值與'0'不同,則會輸入'if' –

+0

(刪除C++標記和縮進代碼以維護上下文) –

回答

6
if (x[i] = y[i]) 

比較運算符是==

if (x[i] == y[i]) 

在第一示例中的分配返回這是不爲0,因此,如果語句傳遞的y[i]值。

2

其正確的,因爲你asssign值Y [i]到x [我]

值Y [i]有三個非零值。所以br增加三倍。爲了平等,你應該使用x [i] == y [i]。不像你那樣單一'='。

+0

我現在明白了,謝謝 – user2420345