令人迷惑的++a++
看到标题的时候您可能马上就想告诉我这样写很不好,甚至它根本不合法,经验丰富的程序员应该避免这样的表达式。我非常赞同这个观点,不过这不是我想问的问题。所以请耐心看完我的问题再回答。假如现在在某个程序中我们看到++a++这样的表达式,我们应该如何解释?首先,后缀++优先级高于前缀++,因此,首先会拷贝一份a的副本,传递给其他操作符运算,并且a本身执行a=a+1操作。那么问题就来了,前缀++所执行的对象究竟是a本身,还是由后缀++传递过来的副本?如果是a本身,那么a的值就会再加一;但如果针对的是副本,那么理所应当a的值就不会改变。我们应该如何思考编译器对这样的表达式的态度?受条件所限,我无法在大量不同机器和不同编译器上验证,所以请知道的大神给予解释,谢谢!
当然,这个问题还有其他问法,比如考虑&a++究竟传递的是谁的地址?对于c语言把这个搞清楚我认为还是有意义的。
PS:我在vc6++上测试结果是报错,但其他编译器就不知道了。