程序C中出现意外结果

时间:2013-05-25 14:27:19

标签: c

我无法弄清楚,为什么这段代码的结果是3

#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);    
}

2 个答案:

答案 0 :(得分:6)

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

比较运算符为==

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

在第一个示例中,赋值返回了y[i]的值,该值不为0,因此传递了if语句。

答案 1 :(得分:2)

正确,因为你将y [i]指向x [i]

y [i]有三个非零值。所以增加了三倍。为了平等,你应该使用x [i] == y [i]。不像你那样单身'='。