为了账号安全,请及时绑定邮箱和手机立即绑定

自增自减算法疑惑

a++ --a 怎么计算呢?

 


正在回答

6 回答

a++表示先取之前的a值,再做加法运算;++a表示先做加法运算,再取现有a值。因此,若a=1,b=a++,此时b=1,a=2;如果求b=++a,此时b=2,a=2。--a和a--同理。

0 回复 有任何疑惑可以回复我~

a++   表示先进行赋值,后面再加一。--a表示先减一,然后再赋值给a。

0 回复 有任何疑惑可以回复我~

1,a++和--b你可以这样子理解,设本来a=b=0;经过上面计算后,a的值为1,b的值为-1;但是c=a++等于0,这里c 取得是运算前的值,--b代表的是运算后的值,猜想b=?运算前的初值是0,经过减法运算后的值则为-1;即d=--b=-1

0 回复 有任何疑惑可以回复我~
#1

missyou012

a为什么等于1?
2016-03-03 回复 有任何疑惑可以回复我~

运算符在前面,先运算再取值,如 ++a; 如果a原来等于0,现在a等于1。取值也会是1;

运算符在后面,先取值再运算,如a++; 如果a原来是0,运算完a等于1,为下一次取值做准备,但本次取值因为是先取值,所以取值为0;

0 回复 有任何疑惑可以回复我~

编译器按照最长匹配原则从左到右来解析代码,所以在语法上这句代码被认为是 ((a++)-- a)。

不过 ++ -- 这样的自增减运算符的操作数必须左值(lvalue)。 a是左值,所以 a++ 是合法的,然而 (a++) 这个表达式的值是右值(rvalue),不允许再作为 -- 的操作数了,所以本句在语义上出错了。最终编译器会报错。


另外,不要在一个语句中对同一个变量多次取值、赋值,这样的结果很可能是未定义的。

0 回复 有任何疑惑可以回复我~

就是+1和-1

左侧内容中有讲解啊


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

自增自减算法疑惑

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信