C++ 为什么用C++;库特<&书信电报;8*7/2等于28?

C++ 为什么用C++;库特<&书信电报;8*7/2等于28?,c++,C++,我们知道博德马斯法则,或者首先根据优先级,划分将首先发生。所以7/2=3,当我们除以(int)/(int)。然后乘以8,那么3*8将是24 < C++ >代码> CUT> P>我们不严格遵循BordMax,>+-/COD>比*/优先级低。但是+和-具有相同的优先级。这意味着从左到右首先出现的一个将首先被计算。类似地,*/具有相同的优先级 所以cout 我们知道博德马斯法则,或者首先根据优先级,划分将首先发生 哦,不。对于我的kwnoledge(参见示例or),BODMAS代表 B先用括号括起来

我们知道博德马斯法则,或者首先根据优先级,划分将首先发生。所以7/2=3,当我们除以(int)/(int)。然后乘以8,那么3*8将是24


< C++ >代码> CUT> P>我们不严格遵循BordMax,>+-/COD>比*/优先级低。但是
+
-
具有相同的优先级。这意味着从左到右首先出现的一个将首先被计算。类似地,
*/
具有相同的优先级

所以
cout

我们知道博德马斯法则,或者首先根据优先级,划分将首先发生

哦,不。对于我的kwnoledge(参见示例or),BODMAS代表

B先用括号括起来
O阶数(即幂和平方根等)
DM除法乘法(从左到右
AS加减法(从左到右)


因此,在数学中,
8*7/2
将被处理为
(8*7)/2

在处理实数时,乘法和除法的顺序并不重要。而
(8*7)/2
8*(7/2)

但在C(或C++)整数算术中,情况有所不同。乘法和除法运算符具有相同的优先级,且左关联。这意味着
8*7/2
被解释为
(8*7)/2
,在本例中,它给出了与真实数学对应的答案。因此,虽然在数学上
7/2*8
等于
8*7/2
,但在C语言中,它将非常不同,因为它受不同的规则控制。计算机不做实数运算


是的,在计算机(整数)算术中,它确实与你做事的顺序有关。

8*7/2
(8*7)/2
相同,你可以试试
8*(7/2)
。请选择一种语言。C、C++和java不是同一种语言,可能有不同的规则。“我们知道BordMas规则,或者首先根据优先级,除法会首先出现。”只有当语言遵循BordMaS规则。许多编程语言对除法和乘法具有相同的优先级,两者都具有从左到右的关联性。在这些语言中,我期望得到28的结果。对于C++,操作符遵循。这些确实因语言而异
*
/
都以“从左到右”的优先级进行计算。从未听说过BODMAS,但我发现的描述中没有说“乘法前除法”,而是有一个“从左到右的除法和乘法”步骤,这就是你的程序所做的。C++和我所发现的所有博文的描述一样。首先是括号,然后是顺序,然后是从左到右的除法和乘法,然后是从左到右的加法和减法。在数学中,乘法和除法总是有相同的优先级,“先出现”不是技术上正确的措辞,<代码> *>代码>和<>代码> />代码>具有相同的优先级和左到右的关联性:注意C++不严格保证左右对的评价。C++使用优先级来构建评估树。一旦构建,该树甚至可以并行计算。