ITPub博客

首页 > 应用开发 > > 自增运算符++,的运算顺序问题

自增运算符++,的运算顺序问题

作者:tony0087 时间:2019-09-05 11:44:04 0 删除 编辑

编译器: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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-06

  • 博文量
    233
  • 访问量
    9714