C++ 当循环再次重复时

C++ 当循环再次重复时,c++,c,input,char,C++,C,Input,Char,我不知道我的代码出了什么问题,它又在重复 do { scanf("%c", &operacao); //Tratamento de erro (Validando a informacão vinda do usuário if ((operacao != '*') && (operacao != '+') && (operacao != '-')) { printf("-----

我不知道我的代码出了什么问题,它又在重复

do { 
         scanf("%c", &operacao);
        //Tratamento de erro (Validando a informacão vinda do usuário
        if ((operacao != '*') && (operacao != '+') && (operacao != '-')) {
            printf("---------------------------------------\n");
            printf("*****       MENSAGEM DE ERRO      *****\n");
            printf("---------------------------------------\n");
            printf("Você digitou um valor inválido!\n");
            printf("Por favor, digite + para soma, - para subtração * para multiplicar ou / para dividir!\n");
        }
    } while ((operacao != '*') && (operacao != '+') && (operacao != '-'));

使用以下语句

scanf(" %c", &operacao);
      ^^^ 

否则,也会读取空白字符(例如,与按下的Enter键相对应的新行字符“\n”)。

听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:1。读完歌剧后再把它打印出来。2.歌剧是什么类型的?打印值将帮助您理解while循环。既然您标记为C++,则应考虑<代码> CIN > C <代码>,而不是<代码> SCANF。您需要检查<代码> SCANF< /COD>的返回值。
scanf
返回满足的参数数量,如果有错误,返回-1。不要相信用户输入正确的数据。Thx提示-我已经解决了这个问题。谢谢你的关注。@AlexSousa一点也不。不客气。