我的for循环没有正确回应

时间:2014-03-16 07:54:24

标签: c arrays for-loop

我正在搜索数组。试图找到一个746的条目。

这是数组中的最后一个,我的for循环始终为0 返回x。我对for循环并不陌生,但我现在要在这里尖叫。

它似乎也采取了我给它并说找到的任何东西。

for循环是否存在明显问题?

int search;
printf("what is your search: ");
gets_s(buf);
search = atoi(buf);

for(int x = 0; x < 8; x++) {
    if(search = id[x]) {
        printf("FOUND! %i", x);
        break;
    }
}

5 个答案:

答案 0 :(得分:4)

您使用=代替==。改变

if (search = id[x])

if (search == id[x])

答案 1 :(得分:4)

更改为:

if (search == id[x])
{
      printf("FOUND! %i", x);
      break;
}

=是赋值运算符。如果(search = id[x])非零,则id[x]为真。

然而,==是相等运算符,它检查两个表达式是否相等。

答案 2 :(得分:2)

C和类似语言(Java,C#等)中,=不是相等测试,而是赋值(即设置值)。要测试相等性,您需要使用==

如果您想检查if (search == id[x])是否等于search,请将代码更新为id[x]。否则返回赋值(即id[x])。这被认为是真实的&#34;在C中,如果它不为零。

答案 3 :(得分:0)

你正在做search = id [x],

最初x为0, 在那一点上,搜索获得id [0]的值。 如果它是非零值,则if条件中的表达式求值为TRUE并且它将执行if()的主体 因此它被错误的结果终止

for (int x = 0; x < 8; x++)
{

    if (search == id[x])    //here is the change
    {
        printf("FOUND! %i", x);
        break;
    }
}

答案 4 :(得分:0)

在if条件而不是比较

search == id[x]

你已完成作业

search = id[x]
如果你在if条件赋值中进行了赋值,并且在你的情况下将search变量的值传递给if条件,则使用c语言

在C语言中,因为大于0的正整数值被认为是真的,因此您的if条件满足并且您每次都获得0作为搜索项目的位置。