在C和C++中,常用的表达式中使用自增和自减运算符,他们的作用都是使变量的值增1或减1,如:
++i(在使用i之前,先使i的值加1,如果i的原值为3,则执行j=++i后,j的值为2)
--i(在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为4)
i++(在使用i之后,i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,i的值变为4)
i--(在使用i之后,i的值减1,如果i的原值为3,则执行j=i--后,j的值为3,i的值变为2)
注:①自增自减运算符只能用于变量,而不能用于常亮或表达式,如6++或(a+b)++都是不合法的。
②++和--的结合方向,前置的++和--的结合方向是自右向左的,后置的++和--的结合方向是自左向右的,并且后置的++和--运算符的优先级略高于前置的++和--,而且他们的优先级只低于::()[]->.这些运算符。
③自增自减运算符使用灵活,在很多情况可能出现歧义,如:
int i=3;
cout<<i++<<" , "<<i++<<endl;
请问应该输出什么?很多人都会认为是3,4。而实际输出的是4,3。因为许多编译器系统在处理输出流时,先按自右向左的顺序对个输出项求值。
下面几个例题大家自己回去思考下哪些是对的,对的话i的值是多少:
1、+i++
2、(+i)++
3、(++i)++
4、(i++)++