[英]Order of execution of C operators
#include <stdio.h>
int main(void) {
int i;
i = 10;
i*= 10+2;
printf("%d",i);
return 0;
}
为什么下面的代码120而不是102的输出?
因为优先顺序使'+'高于* =,所以10 + 2将在i * =之前出现。
有关订购的C参考,网址为http://en.cppreference.com/w/c/language/operator_precedence
在这一行中,i * = 10 + 2; 在这种情况下12乘以i表示i = 10 * 12; 所以它会给120的答案
解决此问题的方法请尝试此。
i*= 10;
i+=2;
您的代码像。
i= i*(10+2)
所以给出的答案是120。
如果你想像102那样做。
i=i*10+2
这个
i*= 10 + 2;
是语法糖
i= i * (10 + 2);
其余的优先级从左到右,在多/除后加和减
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.