for(int i = 0;i!=10;i++)
我一直都是使用第二种,因为这可以很好地说明半开半闭区间的思想,而且 , C数组本身就是从零开始的,我们用10来表示它最后一个元素的下一个位置(因为最后一个元素是a[9]),
其实 , 不仅仅是数组,在许多语言的迭代器(包括c++标准库)中都会使用第一个元素表示头,最后一个元素的下一个位置表示尾,半开半闭区间的这种思想可以让你不用陷入多1或是少1的问题中,比如[n,n)是没有元素的,[n,m)是有m-n个元素的 。。
至于为什么是i!=10,而不是i<10,那要是这样的语句呢?
for(int i = 10;i!=0;i--)
不用把”<”改成”>”了,而且 。。。作为一个终止状态,还有用(后面论述)
现在还记得开头的那个求妹子的列子吗?
for(inti =1;i<=10;i++)cout<<"求"<
这里我就让i从1到10,(我不可能求0个妹子吧?)所以 , 这种对循环i的选取,0或1,是很有细节思考的 。
下面再看一个例子:
inti;for(i=0;a[i]!='c'&&i!=N;i++);
这段代码的作用是在一个char数组中找到第一个是’c’的元素,并返回它的索引
有几个有趣的地方:
我把i的定义放在外面
这个for循环没有循环体,看那个分号 。。。。。。
不是计数器 , 不是产生器,我喜欢把这种for称之为循环搜捕器,它用来找一个元素
所以我把i定义在循环外,因为之后我们还要使用到i,而同时也与前面的那些for循环中把i定义到for里面形成了对比,因为之前的作用,我并不想把它的作用域外流 , 实际上,在c++中鼓励你这么使用for,不让它外流,这种东西在vc6.0会出点问题(因为它不是标准的c++),因为i的作用域会外流,所以你就不能写for(int i;;)这样的语句两次,它会报错说你重定义了 。而在c语言中,之前是不支持for(int i;;)这种定义方式的,不过在c99的时候,它也支持了,并鼓励你这样写 。
并且,通过这个搜捕器,它的条件是a[i]!='c'&&i!=N,所以循环终止时,是a[i]=='c'||i==N这就是我之前说的终止条件,我们就可以在之后写这样的语句;
if(i==N)//没找到else//找到了 。i 是它的下标
这就是为什么用’!=’而不是<的原因了 , 这可以很清楚地看清终止条件 。
另外 , 对现在我们的大多数朋友来说还是学编程技术最重要!栽一棵树最好的时间是十年前,其次是现在 。对于准备学习编程的小伙伴 , 如果你想更好地提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记 , 基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
推荐阅读
- 写作提纲怎样写思维导图语文 写作提纲怎样写
- 奥迪语音怎么唤醒 奥迪语音唤醒方式
- 不假思索的反义词 不假思索的反义词语
- 苹果手机微信语音没声音怎么回事 苹果手机微信语音没声音是什么原因
- 猪肉英语怎么说啊 猪肉英语怎么说
- 我们都用英语怎么说 都用英语怎么说
- 小学生成绩差怎么提高英语 小学生成绩差怎么提高
- 微软更新安卓版SwiftKey:可在系统中更改输入语言
- damage是什么意思中文 damages
- 雷鸟新AR眼镜发布:搭载骁龙XR2 支持多语言AI翻译