在本书第三章的练习十中,我试图去做一个程序,要求我编写一个程序,该程序接受一个操作,后跟两个操作数并输出结果。 将操作读取为一个字符串,称为操作,然后使用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>
答案 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
中包含的单词是否等于字符串“ +”。这更加令人困惑,因为我们通常将加号视为符号。在您的程序中,加号“ +”是一个字符串。
因此,括号中的条件询问操作字符串是否包含字符串“ +”。如果是这样,则将执行其后的代码。
下一行中的+
现在是一个实数加法符号,它将两个操作数中的值相加以进行打印。
您需要研究书中的其他示例以获取此信息。
祝你好运。