自增/自减运算符

因为做以下题有感。。。原来简单的自增运算符也有这么多猫腻

http://blog.csdn.net/zdarks/article/details/8767087 第五题

  参考:c程序设计语言2.8  

Vs2015测试:

a[6]={0};t=h=0;

a[0]=a[0]++

  

1

a[1]=++a[1]

  

1

a[2]=t++

  

0

a[3]=++h

  

1

COUT<<a[4]++

  

0

COUT<<++a[5]

  

1

  1. 自增自减只能作用于变量,不能作用于表达式
  2. 在不需要使用任何具体值且仅需要递增变量的情况下,前缀与后缀方式相同。
  3. 首先考虑的是,
    1. 前缀先赋值,后自增
    2. "++"优先级大于"="
    3. 并且,4.a的优先级高于4。b
      1. a[0]=a[0]++,先是将a[0]赋值给a[0],然后执行a[0]的自增,所以a[0]的最终值为1
      2. a[1]=++a[1],a[1]先自增为1,再赋值给a[1];最终为1
      3. a[2]=t++,如i,不过t先赋值给a[2],再自增。所以a[2]=0;t=1;
      4. 以下同理,只要遵循4.a/4.b即可。

         

你可能感兴趣的:(自增/自减运算符)