首页 > 应用开发 > > 自增运算符++,的运算顺序问题
编译器:Microsoft Visual C++ 2010 Express
main()
{
int a = 3;
int b;
b = -a++;
printf("%d\n", b);
}
运行的结果是-3

但是如果按照优先级和结合性的说法感觉无法解释
'++'的优先级和取反'-'优先级相同,结合性是右结合
-a++应该等价于-(a++)
应该是先++再取反,应该为-4
但实际结果却是-3
这里表面上看是先赋值再自增,感觉与右结合相矛盾
(希望有人能从汇编的角度解释一下b=-a++的过程)
(虽然知道前缀自增运算符是---先增后用,后缀自增运算符是---先用后增,但是从优先级和结合性的角度想不通)
还有类似的代码
main()
{
int a = 3;
int b;
b = a++;
printf("%d", b);}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1747/viewspace-3121780/ ,如需转载,请注明出处,否则将追究法律责任。