I_like_Python 发表于 2020-9-14 18:56:14

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:}

qiuyouzhi 发表于 2020-9-14 19:05:08

改成这样:
#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:10:55

本帖最后由 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;
}

sunrise085 发表于 2020-9-14 19:23:09

你的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]
查看完整版本: Goto语句