while循环,条件中定义变量和循环体变量一致时出现问题分析
问题:做底层文件copy实验时,为得到read write的返回值在,循环条件中直接定义了
while(int readnum=read(in,&c,1)),
部分代码如下:
> in=open("file.in",O_RDONLY,0666);
> out=open("file.out",O_WRONLY|O_CREAT,0666);
> //read
> while(int readnum=read(in,&c,1))
> {printf("readnum=%d\n",readnum);
> //write
> int writenum=write(out,&c,1);
> printf("writenum=%d\n",writenum);}
编译出错,后查阅资料分析:
《C++Primer》(中文第四版) P178: “在循环条件中定义的变量在每次循环里都要经历创建和撤销的过程。”
结论:循环条件中的定义的变量,在循环体中不能直接引用的,通过在while循环外定义来解决,提前定义好变量。
int readnum;
int writenum;
while(readnum=read(in,&c,1))
{printf("readnum=%d\n",readnum);
//write
writenum=write(out,&c,1);
printf("writenum=%d\n",writenum);}