自加(自减) 在变量前,先计算自加(自减),再进行其他操作;自加(自减)在变量后,后计算自加(自减)。
x++只能作为右值,而++x既可作为左值又可作为右值。
首先看一段程序:
int i = 3;
int a = (++i)+(++i)+(++i);
如果算成a=15,就错了。根据编译器的不同有两种结果,一种为a=18,先计算三个括号中的++,然后6+6+6=18;另一种是a=16,先计算前两个括号中的++,得到5+5+(++i)=10+6=16.
其实,上面的计算方式没有必要应用到程序中。。。。。
逗号表达式:
表达式1,表达式2,……,表达式n
规则:从左算到右顺序求职,最后一个表达式n的值就是逗号表达式的值。
int i = 3;
int a = (++i,i++,i+10);
这次得到的a=15。
贪心法 ++, –表达式的阅读技巧
编译器处理的每个符号应该尽可能多的包含字符
编译器以从左向右的顺序一个一个尽可能多的读入字符
当即将读入的字符不可能和已读入的字符组成合法符号为止
int i = 0;
int j = ++i+++i+++i;
上段代码会报错,根据贪心法,编译器首先读入“++i++”,++i=1,而“1++”无法计算,所以会报错。
int a = 1;
int b = 2;
int c = a+++b;
计算的结果是,a=2,c=3,根据贪心法,计算a++,但是a先参与加b运算,再自加。
空格可以结束编译器的贪心。
将上段程序修改如下:
int a = 1;
int b = 2;
int c = a + ++b;
计算的结果则改变为a=1,c=4,c=1+3=4。
因此,程序中适当的加上空格是很好的。