问答详情
源自:3-3 自增与自减运算符

自增自减算法疑惑

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

 


提问者:紫雨阁之竹韵草 2015-01-06 16:15

个回答

  • Chen2喵
    2016-03-11 21:05:04

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

  • 和她的故事1
    2016-03-10 22:57:28

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

  • qq_小迪_5
    2016-01-26 20:50:38

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

  • 江雨飞
    2016-01-25 17:32:00

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

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

  • onemoo
    2015-01-07 15:32:02

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

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


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

  • 偌颜宁
    2015-01-06 16:18:36

    就是+1和-1

    左侧内容中有讲解啊