x++ ,x--,++x,--x 理清了,就很简单,原理都是一样的
作者:互联网
对新手来说 ,算法真的很重要,可以 有的时候看起来会很乱, 就像这样
++x,--x,x++,x--
多算几遍就很清楚了
先算一下 x--
class Program
{
static void F(int x, int y = -1, int z = -2)
{
Console.WriteLine("x={0},y={1},z={2}", x, y, z);
}
static void Main(string[] args)
{
int i = 0;
F(i--, i--, i--);
F(z: i--, x: i--);
Console.ReadLine();
}
Console 输出地 x ,y,z
在Main方法里面有具体算法 先来分析一下
int i =0 ;给 i 赋值为 1
F()方法里分别是 i--,i--,i-- 看起来很头疼 这就是 前缀和后缀的区别, 因为是 i-- ,我们就要先 引用 后递减 所以第一个 i-- 的值就为 0 也就是 x=0 ,先引用,后递减,
第二个 i要在原先的基础上 -1,所以 到第二个 i--的时候 仍然要 先引用 直接引用 i的值 -1 所以 y=-1,然后 i仍然要递减,
这时候i的值 已经变成了 -2,z=-2,先引用后递减 这时候 i 依然要 递减 i =-3了
在 下一个F();里 z 先引用 i=-3的值 在递减 x也就是i =-3-1的值 x=-4 ,y没有变,在这个方法里所以直接引用
那我们来整理一下 输出的结果应该是 x=0,y=-1,z=-2
x= -4,y=-1,z=-3
再看一下控制台的输出吧
结果是对的 x++ 也是同样的道理,先引用 x的值 x=0,然后要在引用完之后 递增,等到下一次计算的时候 x的值就是递增完的值了 ,也就是 1
++x 的算法
static void F(int x, int y = -1, int z = -2)
{
Console.WriteLine("x={0},y={1},z={2}", x, y, z);
}
static void Main(string[] args)
{
int i = 0;
F(++i, ++i, ++i);
F(z: ++i, x: ++i);
Console.ReadLine();
}
++i,因为是前缀,就要先运算后引用,
i=0 ,先递增 x=++i=1 这时候 i的值为1 然后再加一在输出这时候y=2,z=3
第二个F()方法里面 的时候 i的值为 3, z 在引用之前要先递增 这时候 z =4 x =5 y 依然没有加入算法 y =-1
整理一下,输出地 结果应该是
x =1 ,y=2,z=3
x=5 ,y=-1,z=4
看一下控制台的结果
结果是对的,
这就是 ++x 和 x++ 的区别 如果运算符在前面的 x的值就是要先运算,后引用,如果运算符在后面的话 ,就是要先引用x的值,然后再递增,参与下一轮运算。
希望对新手有所帮助,我也是新手
转载于:https://www.cnblogs.com/Leeyong/archive/2010/07/10/1774854.html
标签:Console,++,void,int,理清,原理,递减,引用 来源: https://blog.csdn.net/weixin_30234335/article/details/97805484