我正在学习,并在C#中浏览过简单的数学运算。然而,如果第一个小于第二个整数,通常我知道将整数乘以另一个整数的零是一个简单易懂的点。所以,我看过operator precedence in C#,因为我可能有错误的信息。那么,Console.WriteLine((1 + 1) / 2 * 3);
那么它不应该给出零结果呢?但它给出了3
。是否有一点我对C#有错误的知识?
@Edit:问题出在我的算术上。我认为它应该是2/2 * 3然后2/6 = 0为什么在乘法之前进行除法?
@Edit 2:可以关闭此问题。这正是我对运算符优先级的错误认识。到目前为止,我一直认为这是编程中真正的数学过程。我震惊了。 一次又一次地阅读的优点,即使你认为我已经知道主题,也不会跳过
@Edit 3:过了一段时间,我意识到有一些数学表达式的评估称为PEMDAS, BODMAS, BEDMAS and BIDMAS。这就是为什么我一开始就弄错了。
答案 0 :(得分:4)
答案是3 .. 1 + 1 = 2/2 = 1 * 3 = 3 .....操作顺序告诉我们这个
答案 1 :(得分:2)
您应该使用操作顺序。 当你看一下,你可以看到你需要做的第一件事是在括号之间添加两个。然后将其除以2.但是1 + 1是因此第二个数字不大于第一个数字。那你只需要乘以三。
所以( 1 + 1 )/ 2 * 3
然后 2/2 * 3
最后 1 * 3
你可以看到乘法和除法从左到右执行。在除法之前不执行乘法。
答案 2 :(得分:0)
为了消除混淆,即使没有必要,也可以使用括号。这有助于下一个阅读代码的人。
Ex:a =((1 + 1)/ 2)* 3.如果您希望答案为0,则a =(1 + 1)/(2 * 3)。这使得代码更易于阅读,并有助于消除在复杂操作中很难找到的简单数学错误。