我無法弄清楚,爲什麼這個代碼的結果是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);
}
我無法弄清楚,爲什麼這個代碼的結果是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);
}
if (x[i] = y[i])
比較運算符是==
:
if (x[i] == y[i])
在第一示例中的分配返回這是不爲0,因此,如果語句傳遞的y[i]
值。
其正確的,因爲你asssign值Y [i]到x [我]
值Y [i]有三個非零值。所以br增加三倍。爲了平等,你應該使用x [i] == y [i]。不像你那樣單一'='。
我現在明白了,謝謝 – user2420345
這是無效的C++。 – chris
'a = b'確實具有將'b'分配給'a'的副作用,但它也是一個*表達式*,其評估結果爲'b'的值。如果'b'的值與'0'不同,則會輸入'if' –
(刪除C++標記和縮進代碼以維護上下文) –