【问题标题】:Can we use symbol in if statement in C++?我们可以在 C++ 的 if 语句中使用符号吗?
【发布时间】:2021-04-10 08:56:50
【问题描述】:

要求用户输入以下数学符号之一:

+、-、* 或 /

谁能告诉我如何在if 语句中使用这些符号?如果没有,我该如何在不使用if 语句的情况下做到这一点,比如 1 表示加法,2 表示乘法等?

if(z==+){
     std::cout<<x<<"+"<<y<<" is "<<x+y;
   }

【问题讨论】:

  • z 设为char 类型,然后使用if (z == '+'),也许?
  • 试试if (z=='+')。加号是一个字符。用户将输入一个字符。喜欢在:char z; std::cin &gt;&gt; z;
  • 考虑使用GNU bison 来完成这样的任务。您的问题与那里的一个例子非常相关

标签: c++ c++17 logical-operators


【解决方案1】:

如果符号是用户在 cmd 中的输入,那么它们是 char 类型。

char z;
if (z == '+')
  std::cout << x << "+" << y << " is " << x + y;

【讨论】:

    【解决方案2】:

    +== 是运算符。它们的语法需要两个操作数。 z 是一个字符。它不能与运算符进行比较,而只能与其他变量进行比较。正如其他答案所说,'+' 变成了一个字符 https://en.wikipedia.org/wiki/ASCII#Character_set 并且可以进行比较。

    【讨论】:

      【解决方案3】:

      只需将运算符括在引号中并使用字符串/字符数据类型来存储运算符

      char z;
          if(z=='+'){
               std::cout<<x<<"+"<<y<<" is "<<x+y;
             }
      

      【讨论】:

      • 我建议在运算符周围添加空格,这样代码更容易阅读。
      【解决方案4】:

      输入值的用户通常会以字符或字符串的形式输入(取决于您如何读取它。您不能仅将变量与 + 符号进行比较,而是执行以下操作:

      if("+" == z) {
      //do operation
      }
      else if("*" == z) {
      //do operation
      }
      else {
      //etc.
      }
      

      或使用开关。

      【讨论】:

      • 您还应该举一个使用字符数据类型而不是字符串的示例。
      • switch 语句不能与字符串一起使用。 :-(
      • 但是 switch 可以与单个字符一起使用
      【解决方案5】:

      您可以将符号输入存储在一个字符char symbol中,然后:

      switch(symbol){
          case '+':
              std::cout << ... ;
              break;
          case '-':
              std::cout << ... ;
              break;
          ...
      
          default:
              std::cout << "symbol not valid\n"; ;
              break;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        • 2011-08-06
        • 1970-01-01
        相关资源
        最近更新 更多