c++的一个问题,关于for()的机制很耐人寻味,得到的结果出乎意料,向大虾请教
有关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中有没有第一个条件句的结果是一样的,那为什么会出现只有四个数的那个结果呢?