Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 执行while循环进入for循环_C_Loops - Fatal编程技术网

C 执行while循环进入for循环

C 执行while循环进入for循环,c,loops,C,Loops,我制作了一个游戏,但不想使用do while循环。 因此,我尝试使用for循环。问题是当我用do while运行时 它可以工作,但当我运行for循环时,它的工作方式就不同了 我想我正确地将do while改为for循环。有人能告诉我我错过了什么吗 do { crntShowBottle = rand() % 2 + 2; } while (crntShowBottle == prevShowBottle); prevShowBottle = crntSho

我制作了一个游戏,但不想使用do while循环。 因此,我尝试使用for循环。问题是当我用do while运行时 它可以工作,但当我运行for循环时,它的工作方式就不同了

我想我正确地将do while改为for循环。有人能告诉我我错过了什么吗

    do {
        crntShowBottle = rand() % 2 + 2;
    } while (crntShowBottle == prevShowBottle);
    prevShowBottle = crntShowBottle;



    for (;;) 
    {
        crntShowBottle = rand() % 2 + 2;
        if (crntShowBottle == prevShowBottle)
                break;
    } 
    prevShowBottle = crntShowBottle;

首先,试着理解
循环
的机制,以及它们与
while循环
for循环
的区别

根据您的代码,发生了什么

  • do while
    部分中,您给出了“先做某事”的说明,然后检查条件。如果条件(检查)为
    true
    crntshowBattle==prevshowBattle
    ,则循环必须再次运行。否则,如果条件为
    false
    crntshowBattle!=PrevShowBattle
    循环必须终止

  • for循环
    部分中,您使用了
    无限循环
    for(;;)
    。意味着循环将运行无限次。但是,在
    循环
    中,您编写了
    中断
    条件。因此,当条件匹配时,循环将关闭。因此,您必须使用
    crntshowBattle!=prevShowBottle

  • 您还需要了解
    break
    是如何工作的


  • 这两种退出条件完全相反。第一个循环在值不相等时退出,而第二个循环在值相等时退出。^^^^更正:
    if(crntshowBattle!=prevshowBattle)中断以及您为什么要将
    do/while
    更改为
    for
    ?一个并不天生比另一个好,在这种情况下,
    do/while
    似乎更清晰。每当你有或看到类似(;;)
    的代码时,你应该立即思考,“也许这不是
    for
    循环的真正情况?”对不起,伙计们。虽然我最早学习C语言,但我只为Golang学习C语言。我有点相信只有一种循环。所以我试着只使用一个循环,它是for循环,就像Golang一样。