int i = 3;
printf("%d", (++i) + (++i));
打印结果 不是6 ,不是7 ,不是8,也不是9, 而是10。
因为 (++i)+(++i) 是先对第一个 i 加1 ,现在 i 等于 4 , 然后再对第二个 i 进行加 1, 现在的 i 等于5
然后把 5 赋值给 第一个 i 和第二个 i, 所以结果就是 5+5 =10;
(++i)+(++i)+(++i) 这个表达式 则可以看成 ((++i)+(++i))+(++i) 即 先把前两项算出结果再与第三项
计算 , 由上面可知 前两项的结果为10 , 然后10再加 ++i , 也就是加上6, 所以结果为16。