if语句的条件

时间:2018-10-26 03:14:43

标签: c++ if-statement

在本书第三章的练习十中,我试图去做一个程序,要求我编写一个程序,该程序接受一个操作,后跟两个操作数并输出结果。 将操作读取为一个字符串,称为操作,然后使用if语句找出用户想要的操作。将操作数读取为double类型的变量。对于称为+,-,*,/的操作实现这一点,您知道(加,减,乘,除)是显而易见的。

这是我到目前为止编写的内容,它一直有效,除了我的问题外,所有问题都是if语句中条件的概念。根据我的理解,if语句带有括号,即在一定条件下测试值以查看它们是否为真或假,然后计算机才决定是否运行代码。所以告诉我为什么当我必须在cout中使用运算符来获取两个输入值的结果时,为什么必须编写与运算符相等的运算作为条件?我不明白这一点,难道不是用更少的语句来编写这种更好的方法吗?

<script src="https://unpkg.com/vue@2.5.17"></script>

<div id="app">
  <div>
    <span>Department:</span>
    <input id="dept" type="radio" v-model="Department" value="IT">
    <label for="dept">IT</label>
    <input id="fin" type="radio" v-model="Department" value="Finance">
    <label for="fin">Finance</label>
    <button @click="getOptions">Get options</button>
  </div>

  <select v-model="selectedClient"  class="stat-select text-u-c">
    <option disabled value="">Please select a Client</option>
    <option v-for="item in options" :key="item.id">{{item.label}}</option>
  </select>
  
  {{selectedClient}}
</div>

3 个答案:

答案 0 :(得分:2)

对于单字符操作,您可以使用switch语句:

switch (c) {
    case '+' : std::cout << op1 + op2 << std::endl; break;
    case '*' : ... 
    ...
    default  : std::cout << "my dud!" << std::endl;
}

如果您关心语句的数量,则还可以使用丑陋的三元运算符:

std::cout << (c=="+" ? op1+op2 : c=="*" ? op1*op2 : "DUDEEE!") << std::endl;

答案 1 :(得分:2)

如果您要问为什么不能做这样的事情:

cout << operands1 operation operands2 << endl;

这是因为这不是语言的结构。您不能将变量放在运算符将要被替换的位置。假设operation不包含操作数。那会发生什么?

您现在拥有的是处理此问题的最简单方法。

答案 2 :(得分:0)

由于操作符“ +”实际上是一个字符串,因此分配有些混乱。

if (operation == "+")// I was told to write it like this in the book  {
      cout << operands1 + operands2 << endl;
}

变量operation是包含字母和单词的变量。我们称这种类型的变量为字符串变量。这至少使人困惑。

然后,if语句询问变量operation中包含的单词是否等于字符串“ +”。这更加令人困惑,因为我们通常将加号视为符号。在您的程序中,加号“ +”是一个字符串。

因此,括号中的条件询问操作字符串是否包含字符串“ +”。如果是这样,则将执行其后的代码。

下一行中的+现在是一个实数加法符号,它将两个操作数中的值相加以进行打印。

您需要研究书中的其他示例以获取此信息。

祝你好运。