#include <stdio.h>
int main(void)
{
int w=2*3/2; //1
int x=5%2*3/2; //2
printf("%d %d",w,x);
return 0;
}输出3 1
在(1)中,它给予乘法比除法更高的优先级,而在(2)中,相反。为什么会这样呢?
发布于 2014-02-02 01:09:39
它们具有相同的优先级,并且总是从左到右执行。
2*3/2 = (2*3)/2 => 3
6/2 => 3 和
5%2*3/2 = ((5%2)*3)/2 => 1
(1*3)/2 => 1
3/2 => 1 (integer gets truncated)发布于 2014-02-02 01:19:55
我的朋友乘法和除法在这段代码中有相同的precedence.But,这两个都在一个表达式中,所以当两个运算符在一个表达式中组合在一起时,我们检查“结合性”,这里是“从左到右”,所以在
1)it will first solve multiplication than division.left to right一个输入
2)it will first solve % then * than /.left to right有关更多信息,请仔细阅读C中运算符的结合性和优先级,你很容易在互联网上找到这一点。
发布于 2016-11-02 11:49:22
在这种情况下,从左到右都算数。但不管怎样!在一些学术文献中,隐含的乘法被解释为具有比除法更高的优先级。因此,有一种不同的方式可以看到这一点。这也是为什么数学家或内科医生在一开始就试图避免这种记法,而是写一个分数。
https://stackoverflow.com/questions/21500961
复制相似问题