我有以下代码:
int array[5] = {1, 0, 1, 0, 0};
int i;
for(i = 0; i < 5; i++)
{
if(array[i] == 1)
{
printf("found one\n");
}
}
我们怎么知道第二个1
in the array
是最后一个1
我们发现?
我的意思不是保留最后的值1
,我的意思是我们应该如何知道第二个1
是最后一次出现了,没有再出现了吗?
您可以简单地以相反的顺序循环:
for(i = 4; i >= 0; i--)
{
if(array[i] == 1)
{
printf("last 1 found!\n");
//break or do whatever you want
}
}
我们可以进一步改进代码如下:
int main(){
int array[] = {1, 0, 1, 0, 0}, i;
for(i=sizeof(array)/sizeof(int)-1; array[i]!=1 && --i;);
printf("last 1 found at index = %d\n", i);
return 1;
}
Codepad http://codepad.org/Z4jE3VaW.
第二种形式的代码有一些额外的好处:
- 包括初始化。
- 数组的大小独立性。
- 快速有两种方式:短路行为 http://en.wikipedia.org/wiki/Short-circuit_evaluation的 &&,
--i
将在需要时执行。
- 较小的代码(删除
if()
, break
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)