——————————————————————————————————————————————————————————————————————————
下面以一个简单的代码说明
#include <stdio.h>
int main()
{
int a, b, c, d;
a = 10;
b = a++;//先把a的值赋给b,然后a的值其再加1,此时b=a=10;然后a=a+1;(a=11)
c = ++a;//先把a的值加一,然后把此时a的值赋给c;a=a+1 (a=12)c=a=12;
d = 10 * a++;//运算级别{'*'>'='>'++'}先a*10赋给d,然后a自身++(a=13)
printf(" % d, % d, % d, % d\n", a, b, c, d);
return 0;
}
可能你还是对a++和++a分不清;
a++可以试想
s=a++;等号的运算级别比++的级别高,所以应是先把a的值赋给s后a在进行+1;
++a要怎么理解?
s=++a;要是这样理解的话却得到了错误的结果,
应此我建议记忆一个a++最常用的来进行区分++a;
毕竟c语言需要记忆一些常识;
优先级上
相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7.
逻辑运算最后计算。//(节选百度)
给个赞呗!