不明白这个次数限制,就是理解不了 int = 0; while (1&&a<6){a++...?

int num = rand() % 100 + 1;   
    cout << num << endl;
   
    int val = 0;
  
    int a = 0;                  //1    这是个很简单的猜字游戏,我不明白这个次数限制,就是理解不了 int = 0; while (1&&a<6){a++.............}
    while (1&&a<6)        //2    这个是抄的弹幕123,正常是 int val = 0;   while(1){cin>>val;   if............就是没有次数限制可以理解
    {                               //3    加了while(1&&a<6){a++;.....    就没搞懂这个表达式怎么理解
        a++;//3  
        cin >> val;
        if (val > num)
        {
            cout << "数字过大" << endl;
        }
        else if (val < num)
        {
            cout << "数字过小" << endl;
        }

        else
        {
            cout << "正确!!" << endl; break;
        }
    }

由于while()中必须要有一个值,当要无限循环时就要设置1表示循环条件永远为真,
当有另外的循环条件时,1&&a<6,是永远为真的1 与 a<6 两者都为真才继续循环。
这样关键就看a<6的比较,永远为真的1已经不需要了,可以直接写成 while (a<6)
  
    int a = 0;
    while (a<6)
    {
        a++;//3  
        cin >> val;
        if (val > num)
        .........
    }
等同for循环
    for (int a=1; a<=6; a++)
    {
        cin >> val;
        if (val > num)
        .........
    }  
 

C语言里面非0就是真true,0就是假,理解这个你就明白了。1就是永远为真,等于没有这个条件。

while(1)就是死循环的意思。

while (1&&a<6)   这个可以简化为 while(a < 6), 就是 a 从 0 到 5, 做六次循环。 

就是有次数限制了,只能猜6次

1&&a<6可以写成a<6,因为1与上另一个值,结果取决于另一个值,另一个值是真,结果就是真,另一个值是假,结果就是假。

如果是

while(a<6)

{

a++;

....

}

这样可以理解吗?

它类似

for(i=0;i<6;i++)

{

....

}

不过for里面是i++是最后进行的,写成while就是

i=0;

while(i<6)

{

....

i++;

}

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y