#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)中则相反。为什么会这样?
#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)中则相反。为什么会这样?
它们具有相同的优先级并且总是从左到右执行。
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)
在这种情况下,从左到右进行计数。 但无论如何! 在一些学术文献中,隐含乘法被解释为比除法具有更高的优先级。因此,这可以被看作是另一种方式。 这也是数学家或医生试图避免使用这种符号并首先写分数的原因。
我的朋友,乘法和除法具有相同的优先级。但在你写的这段代码中,两者都出现在一个表达式中。因此,当两个运算符在一个表达式中同时出现时,我们要检查“结合性”,这里是“从左到右”。
1)it will first solve multiplication than division.left to right
一个在
2)it will first solve % then * than /.left to right
如果想要了解更多关于C语言运算符的结合性和优先级的信息,请仔细阅读相关资料,可以在互联网上轻松找到。