理清自增运算符
#include <stdio.h>
int main() {
int i = 2;
int y = 0;
/* 运算先考虑优先级,操作数两边优先级相同再考虑结合性。 */
/* 尽管表达式中运算符有左右结合顺序之分,但是这是局部而言,应首先从整体上从左往有读表达式 */
//*printf("%d", y = ++i + i++ + i);*//* 9 */ printf("%d", ++i + i++ + i);/*9*/ /*这两个同地位(不分先后,实现方式是运行前一个print的时后,注释掉后一个
// 同样的,运行第二个printf是把第一个printf注释掉,这样就可以屏蔽掉相互之间
// 由于自增带来的副作用而造成y值和右值的混乱*/
//*从上面的运行结果可知,printf表达式的值与是不是赋值语句无关*/
//printf(" i1 = %d\n %d\n i2 = %d\n", i, y = ++i + i++ + i, i);/*4,9,4*/
//printf(" i1 = %d\n %d\n i2 = %d\n", i, y , i);/*4,9,4*/
说明用于计算y的i值是3.
printf(" i1 = %d\n %d\n i2 = %d\n", i, y = i++ + i, i);/*3,4,3*/
return 0;
}