Goto语句
有没有哪滴鱼油可以帮个忙?#include <stdio.h>
int main()
{
int i = 0;
while (i++)
{
if (i >= 10)
{
goto Lable;
}
}
Lable:printf("现在,i=%d", i);
return 0;
}
为什么说i=1就完事了?!
{:10_245:} 改成这样:
#include <stdio.h>
int main()
{
int i = 0;
while (1)
{
i++;
if (i >= 10)
{
goto Lable;
}
}
Lable:printf("现在,i=%d", i);
return 0;
} 本帖最后由 baige 于 2020-9-14 19:21 编辑
因为i++是先使用i的值再进行++的,刚开始是i = 0; 循环体为假,再 i+=1 ,最后输出i = 1
你的程序就相当于这样
#include <stdio.h>
int main()
{
int i = 0;
while (0)
{
if (i >= 10)
{
goto Lable;
}
}
i += 1;
Lable:printf("现在,i=%d", i);
return 0;
}
你的while循环的条件是i++,i++会先使用i,然后再进行自加,因此while判断条件的时候i=0,直接不进入循环,然后i++,i=1,执行while循环之后的printf语句,打印出来的i为1
你应该用++i作为循环条件,先自加,再判断条件
#include <stdio.h>
int main()
{
int i = 0;
while (++i)
{
if (i >= 10)
{
goto Lable;
}
}
Lable:printf("现在,i=%d", i);
return 0;
}
页:
[1]