我正在搜索数组。试图找到一个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;
}
}
答案 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)
最初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作为搜索项目的位置。