main()
{
int a=3+2%5;
printf("%d",a);
}
程序返回值5,但是&为什么呢?
答案 0 :(得分:5)
因为您的算术表达式解析为3+(2%5)
。
请参阅此table,并注意%优先于+。
答案 1 :(得分:1)
%
的{{3}}高于+
所以
3 + 2 % 5
相当于
3 + ( 2 % 5 )
给出了5
。
答案 2 :(得分:0)
您的代码相当于:
main() {
int a = 3 + (2 % 5);
printf("%d",a);
}
首先评估 2 % 5
(= 2),然后是3 + 2
,因此答案5
答案 3 :(得分:0)
很简单,'%'超过'+'。
3+2%5
在语义上等同于
3+(2%5)
显然是5
答案 4 :(得分:0)
因为它被解释为3 + (2 % 5)
。当您将2
除以5
时,剩余部分为2
,并将其添加到3
会为您提供5
。
原因它的解释方式是ISO C99 standard的6.5.5
部分:
multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression
换句话说,%
的处理方式与*
和/
相同,因此运算符优先级高于+
和-
。
答案 5 :(得分:0)
模数的计算与乘法和除法的优先级相同。
2 % 5 = 2
2 + 3 = 5
答案 6 :(得分:0)
mod运算符(%)优先于加法运算符,因此首先计算“2%5”,得到2,然后计算3 + 2,得到答案5.