c++里for循环的第三个表达式问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++里for循环的第三个表达式问题。相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;
//自定义函数声明
bool isOdd(int);
//主函数
int main(int argc,char * argv[])

//定义向量vector对象
vector<int> myVector;
//循环插入元素
for(int i=1;i<10;++i)
myVector.push_back(i);
//定义迭代器变量
vector<int>::iterator bound,it;
//partition
bound=partition(myVector.begin(),myVector.end(),isOdd);
cout<<"odd elements:";
//循环输出
for(it=myVector.begin();it!=bound;it++)

cout<<' '<<*it;

cout<<'\n'<<"even elements:";
//循环输出
for(it=bound;it!=myVector.end();it++)

cout<<' '<<*it;

cout<<'\n';
system("pause");
return 0;

//自定义函数
bool isOdd(int i)

return (i%2)==1;


谁能说说是怎么回事啊?
为什么for循环里的it++和++it输出结果一样?

c++里for循环的第三个表达式一般用于计数,但循环后执行。
值得注意的是表达式1、2、3可以都为空不填,表示无条件死循环,但可以用break跳出,如:
for(;;)
语句;
参考技术A 在单独语句情况下
++it和it++的执行效果是相同的
只有把自加语句放在其他语句中 才会有不同效果
比如 a=b++和a=++b就是不同的
单独的
b++;
和++b;是一样的

for循环中 ;;分隔的三段语句 和独立语句的效果相同追问

但是for循环里面不是有输出 *it 吗?如果是++it 岂不是指向下一个地址,而 it++ 才是当前地址?

追答

++it 也就是for循环的第三项,是在每次循环结束时调用的
也就是说
for(A;B;C)等同于
A;
while(B)

xxxxxx

C;


所以循环体xxxxx中的执行 并不是和C一体 所以前自加和后自加没有影响

本回答被提问者采纳
参考技术B 放在这里就是一样的。 int i=5 则++i和i++都是6 --i和i--都是4;他们区别于是先被调用再+1(i++ i--)还是先+1再被调用(++i --i) 例如 int k,i=5; k=i++;//k得到5 i=5; k=++i;//k得到6 i=5; k=i--;//k得到5 i=5; k=--i;//k得到4追问

但是for循环里面不是有输出 *it 吗?如果是++it 岂不是指向下一个地址,而 it++ 才是当前地址?

追答

你可以试试这个就明白了;
for(it=bound;it!=myVector.end();)

cout<<' '<<it++;


for(it=bound;it!=myVector.end();)

cout<<' '<<++it;

结果有什么不同

循环语句

for循环  一种允许我们编写一个执行指定次数循环的控制结构。

for(int j=1;j<=1024;j=j*2){

   System.out.print(j);

}

for后面括号里的三个表达式:第一个表示第一个数从多少开始加;第二个表示加到哪儿停止;第三个参数每次加了后自增。

break在switch里面是结束判断,在循环里面是跳出本轮循环。

continue表示结束本次循环,开始下次循环。

以上是关于c++里for循环的第三个表达式问题。的主要内容,如果未能解决你的问题,请参考以下文章

循环语句

c语言的for语句中,第三个表达式为k++,k++该怎么理解?

JS循环+循环嵌套+经典例题+图形题

循环语句

Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较?

C语言中for循环中条件表达式的小于和小于等于问题