c++的一个问题,关于for()的机制很耐人寻味,得到的结果出乎意料,向大虾请教

lz541055487361928444 2008-12-27 04:28:05
有关for()机制的一个问题,请看以下程序(以下程序是在vs2008上运行的)
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{char d;
int i=1,j=1,k=1;
for(;i<=4;i++) //这三重循环是输出由1、2、3、4四个数字组成的互不相同的三位数
for(;j<=4;j++)
for(;k<=4;k++)
{cout<<i<<j<<k<<" ";
}
cin>>d;
}
本来运行的结果应该为4*4*4=64个数,但是结果只输出四个数:111,112;113,114
只有将循环语句改为
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
时,才输出正确结果,本来for()函数的机制是在第一次循环时才执行第一个条件句,那应该是:只要前面初始化过,在for中有没有第一个条件句的结果是一样的,那为什么会出现只有四个数的那个结果呢?
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaojia268115 2008-12-27
  • 打赏
  • 举报
回复
f最内层的k的for循环,执行完输出111,112,113,114后k=5,所以以后无论外层有几个循环,只能输出4个值
lockhall 2008-12-27
  • 打赏
  • 举报
回复
k变为5后,就进不去循环了,所以就只能打印4次;
lifengjiangol 2008-12-27
  • 打赏
  • 举报
回复
应该是12个数,
是不是第二个循环的j写成了i呢?
liaoweixiaoyu 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lann64 的回复:]
for中没有第一个语句怎么会一样呢?
最内层循环,第一次时,k从1变到5,以后k都等于5,外层再循环,最内层的条件已经不满足了,不会进入循环体了。
中间一层循环的状态也是类似的。
[/Quote]


正解
  • 打赏
  • 举报
回复
明白了,谢谢阿,剩下的我来说吧,其实只有一个循环时for的第一个语句有没有并不影响,但是当嵌套了后,最内层循环做完了,k的值就变成了5,当中层循环再做是必须重新将K初始化为1~~~~~~~~~~~~~~多谢大侠指教
lann64 2008-12-27
  • 打赏
  • 举报
回复
只有最外层循环,因为只需要初始化一次循环控制变量,可以把第1个语句放在最前面。
lann64 2008-12-27
  • 打赏
  • 举报
回复
for中没有第一个语句怎么会一样呢?
最内层循环,第一次时,k从1变到5,以后k都等于5,外层再循环,最内层的条件已经不满足了,不会进入循环体了。
中间一层循环的状态也是类似的。
sincor 2008-12-27
  • 打赏
  • 举报
回复
你说的 可以把 int i =1 写在 for里面试试
ljmscsq 2008-12-27
  • 打赏
  • 举报
回复
路过看看
xuruichen 2008-12-27
  • 打赏
  • 举报
回复
我想问一下,
for
语句里的第一个部分,省略,和不省略有什么区别啊?
怎么会差别这么大?
我原来以为两者没有差别
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
本套餐详细讲解了程序创建技巧以及C++核心知识要点,共包含9门课程,内容涵盖C++基础、C++模板、C++网络编程、C++数据库、C++多线程、C++ STL、C++动态链接库、C++ Boost、C++ GDI+课程,课程中的每一个知识点老师都会进行具体讲解,并配有一定的实用案例。通过本课程的学习,学员可以掌握Windows高级C++开发工程师必学技能点,具备一定的使用C++解决问题的能力。 【现在学习c++,晚不晚?】 不晚!!! 第一,对于大学生来说,像国内的NOIP比赛,国际的ACM比赛,对大学生的求职,高中生的升学,所有很大的帮助。 许多高校在自主招生的过程中对有参加过比赛并获得过证书的学生都会有优先选择。大公司对有此经历的求职人员也会另眼相看。 第二,随着硬件的不断发展,存储器的容量不断扩增,要求我们编写更多复杂性更高的实时程序,而C++的优势就是可以用它来编写功能复杂,业务逻辑繁琐,实时性要求高的项目;之前看新闻知道Google的AlphaGo下围棋的水平已经是我们人类所达不到了。其背后也是用C++和神经网络编写的。 所以说,随着科技的不断进度,C++只会越来越受欢迎!!! 【学完课程,你将收获什么?】 课程中为黄强老师数十年软件开发总结的C++一站式编程知识点,为想真正进入企业开发的童鞋带来全方位的知识补充,学完本课程后,童鞋们将对C++企业级开发必备知识得到全面的完善,在面试与工作中能轻松达到企业要求! 【课程内容简介】 本系列课程为Windows平台 下C++高级开发工程师一站式课程, 学完后,童鞋们将达到企业中高级以上开发能力,以下课程均为入职软件公司C++方向的开发工作必须掌握的高级知识点,课程内容主要包括:

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧