C 如果必须在If语句中加上中断符,那么为什么我们需要在while操作中处理条件呢?

C 如果必须在If语句中加上中断符,那么为什么我们需要在while操作中处理条件呢?,c,if-statement,do-while,C,If Statement,Do While,这其实只是一个一般性的问题 这是我最初写的 do { scanf("%i", &Carselect); if (Carselect == 1) { mass = 1100; velomax = 200; } else if (Carselect == 2) { mass = 1888;

这其实只是一个一般性的问题

这是我最初写的

    do
    {
        scanf("%i", &Carselect);
        if (Carselect == 1)
        {
            mass = 1100;
            velomax = 200;
        }
        else if (Carselect == 2)
        {
            mass = 1888;
            velomax = 415
        }
        else if (Carselect == 3)
        {
            mass = 18000;
            velomax = 129;
        }
        else
        {
        printf("Error in input. Please enter 1, 2 or 3.\n");
        }
    }
    while (Carselect != 1 || Carselect != 2 || Carselect != 3);
我陷入了圈套。我在声明中加入了有效条件的分隔符,这样我就可以离开了,就像这样

    do
    {
        scanf("%i", &Carselect);
        if (Carselect == 1)
        {
            mass = 1100;
            velomax = 200;
            break;
        }
        else if (Carselect == 2)
        {
            mass = 1888;
            velomax = 415;
            break;
        }
        else if (Carselect == 3)
        {
            mass = 18000;
            velomax = 129;
            break;
        }
        else
        {
        printf("Error in input. Please enter 1, 2 or 3.\n");
        }
    }
    while (Carselect != 1 || Carselect != 2 || Carselect != 3);
但我认为while的条件是重复条件,所以只要Carselect等于1、2或3,它就会退出循环。如果必须在If语句中加上中断符,那么为什么我们需要在while操作中处理条件呢

在机器层面或其他层面上,有什么东西需要这种看似微不足道的逻辑呢?

编辑(随着问题标题的更改):

while/do while循环中的检查条件主要用于确定程序是留在while/do while循环中还是退出while/do while循环,而不是break语句

在以下情况下,通常使用break语句:

  • 您希望在执行块中的每个语句之前退出while/do while块
  • 在循环完成整个循环或迭代之前,达到某些异常终止条件时
  • 您创建了一个无限循环,并捕获了一个错误,该错误使您无法继续循环或
  • 其他一些我可能不知道的案例
  • 基本上,只要程序遵循循环块中的“标准/主”路径,break语句就不是用来终止while/do while块的

    相反,while/do while循环中的条件用于在程序遵循循环块中的“标准/主”路径时终止循环

    原件:

    您应该将不平等性检查(
    !=
    )更改为
    平等性检查(
    =

    这是因为您真正想要的是循环继续,只要

    Carselect不是(1、2或3)

    或者,您可以将or运算符(
    |
    )更改为and运算符(
    &&&
    ),从而产生相同的逻辑:

    while (Carselect != 1 && Carselect != 2 && Carselect != 3);
    
    Carselect不是1,不是2,也不是3


    在C中,break带您到包含块的}后面的语句,continue带您到后面的语句{包含块的。这两种方法在长块中都很有用,例如,如果出现错误条件,或者检测到一个更简单的输入,并且不需要对整个块进行所有处理,但您希望继续并获得下一个输入。

    严重吗?我是在放置and条件,而不是or条件?现在请告诉我是的,这很有效D查看标题。查看工作程序/示例中的有效代码。再次查看标题。为什么标题错误?嗯。可能修改了标题:“当条件不工作时——必须使用中断”。这样更好吗?你能更具体地批评一下吗,@user2864740?
    break
    continue
    通常被认为是不好的风格,因为流程可能很难遵循,从而产生意大利面代码。一些编程标准不允许这样做(除了
    select
    之类的语句)。我的观点是,它们可以避免卷积代码,有时是合理的。但只有在某些时候。的确。(“不是1或不是2或不是3”总是正确的。)我倒是在想它。就像我在把它想象成一个或门,我想要1个或2个或3个,这就是我理想中想要写的东西。所以,出于思考,我不认为1个或2个或3个可以表示任何价值。“我想我明白了。”e可读性。恭敬地建议(1)根据对问题本身的评论,这是一个错误的while条件,(2)此处的循环用于捕获无效输入,而不是主循环。
    while (Carselect != 1 && Carselect != 2 && Carselect != 3);