c语言中,i++ ,i--,++i,--i,-i++,-i--
i++的++在后面,说明是最后才加1,也就是先用i的值后,i再加1;比如, i = 3; b = i++;像上面说的,先用i的值后,也就是把i的值赋给b后i再加1,也就是b 等于3,i等于4; ++i的++在前面,说明是先加1,再用i的值。比如 i = 3; b = ++i;像上面说的,先加i的值,也就是i加1等于4后,再用i的值,也就是再把i的值赋给b,最后b等于4,i也等于4; 但有一点要注意,比如有这样两条语句。一开始i等于4。然后有下面这两条语句。 i++; b = i; 这是两条语句。哪条是把它们放在同一行也是两条语句。如下。 i++; b = i; 也是两条语句。但我现在不是想说两条语句,而是要说i++;的情况。 上面说i的最初值是4,在执行 i++; b = i; 时,首先是执行i++,这个时候就别说什么后加1,先加1了。因为只要i++;这样的一条自递语句,不管是i++还是++i都是一样的。所以当执行i++;后,i就等于5,b也等于5。你不能这样认为。因为++在后面,所以要先使用i的值,也就是上面的先把i 赋值给b,然后i再加1。这是错的,只因为i++是一条单单的自递语句,不包含任何东西的自递语句。 总结, i++; //不包括任何东西的自递语句 b = i; 和 b = i++;是不一样的。哪怕最后i的值都一样,可b的值是不一样的。如果i的最初值为2,那么 i++; b = i;的b就等于3。b = i++;的b值就等于2。 关于i--,楼主就自己想下,不懂可以再问。因为只有这样才能让楼主更好的理解。不能要我再把i--说完。如果我说完,楼主不就没有东西要想了吗?
首先说一下++i和i++的区别
**************************
int i = 4;
int b;
b = i++; // 等价于 b = i = 4; i = i + 1 = 5;
**************************
int i = 4;
int b;
b = ++i; // 等价于 i = i + 1 = 5; b = i = 5;
**************************
从具体算法上来说,++i的效率高,i++的效率低。
--同理。就是i = i - 1
符号在前的话,就是先进行--的运算,然后将运算的结果赋值给等号左侧的变量。
--在后面就是,先将值赋给等号左侧的变量,然后进行i = i - 1的计算。
如果单独拿出来,没有等号左侧的变量。
i++;
++i;
计算结果没有差别
比如
i=1;
j=i++;
那么运行后,j=1;i=2;后加的特点就是用完了再把自己加1
i=1;
j=++i;
那么运行后,j=2;i=2;后加的特点就是用前就加1
但是如果只是i++,和++i的话,就体现不出来了,因为这个表达式没有作用于其他的变量,都是自己+1,不涉及到其他的变量。
在for(;y>0;y--)
循环里,因为只是y自己一个单独的表达式,所以写成for(;y>0;--y)
也是一样的
还有就是++的优先级比+高,所以i+++i=(i++)+i
这个时候计算(i++)+i时,根据后加的特点,要先使用,后加,所以(i++)+i可以分解为两部,先计算i+i,然后计算i++;
同理--也是这个原则
i++和++i相同之处是i都自增一,不同是i++表达式的值就是i,因为i++是先赋值后加值
而++i表达式的值是i+1,因为++i是先加后赋值
如,i=1,i++表达式为1,++i表达式的值为2,
至于你说的for循环里循环变量增值
要用i++
而不用++i
,个人认为从循环变量(i)增1考虑,两者没有区别,应该要看到完整的程序才能说用哪个
希望这些对你有用!o(∩_∩)o...
++i,先将i的值加一再打印,结果为9,i的值为9;
--i,先将i的值减一再打印,结果为8,i的值为8;
i++,先将i的值打印再加1,结果为8,i的值为9;
i--,先将i的值打印再减1,结果为9,i的值为8;
故结果为9
8
8
9
注:有的编译器是从右至左编译,所以结果可能不一样。
++i是先自加再执行本语句,
i++是先执行语句在自加;
如a=++i;(i=9)中a=10
a=i++;
a=9
for(;y>0;y--)
y
相当于:
for(;;)
{
if(y>0)
{............执行循环体
y--;起推动作用
}
else
break;//跳出循环}
i=3时
i+++i=(i++)+i=3+3=6
结束后i=4
i---i=(i--)-i=3-3=0
结束后i=2
i++相当(i,i=i+1)
++i相当(i=i+1,i)
遇到指针呢就不是单纯的+1了,是指向下一个数据。
for的执行顺序是
for(a;b;c)d;
a只运算一次
然后运算b,如果b为真,计算d,然后计算c,然后计算b,如果b为真...否则跳到d后的程序
c语言中,i++ ,i--,++i,--i,-i++,-i--
i++表示后加,++i表示前加。区别一般在表达式中才能体现 比如 i=1;j=i++;那么运行后,j=1;i=2;后加的特点就是用完了再把自己加1 i=1;j=++i;那么运行后,j=2;i=2;后加的特点就是用前就加1 但是如果只是i++,和++i的话,就体现不出来了,因为这个表达式没有作用于其他的变量,都是...
单片机c51语言,i++。i--,--i,++i的区别
总结:i++ 和 ++i 的主要区别在于 i 的值是在赋值前还是赋值后改变。同样,--i 和 i-- 也是在赋值前还是赋值后改变 i 的值。这些操作符在单片机 C51 语言中非常重要,因为它们会影响程序的逻辑和输出。
谁能详细的给我讲一下i++,++i,i--,--i的区别阿
1. i++ 是后置自增运算符,它的作用是先返回 i 的原始值,然后将 i 的值增加 1。2. ++i 是前置自增运算符,它的作用是将 i 的值增加 1,然后返回新的 i 值。3. i-- 是后置自减运算符,它的作用是先返回 i 的原始值,然后将 i 的值减少 1。4. --i 是前置自减运算符,它的作...
C++ 中的 i++、++i、--i、i--、+=、-=、*=、\/= 这些如何理解?
在C++中,i++、++i、--i、i--、+=、-=、*=、\/= 这些运算符都是对变量进行操作的。下面是它们的详细解释:1. i++:这是后置自增运算符,表示先使用变量i的值,然后再将i的值加1。例如,如果i的初始值为5,那么表达式i++的结果就是5,然后i的值变为6。2. ++i:这是前置自增运算符...
C语言中i++,++i,i--。--i是怎么运算的,有区别吗
i=1; k=1; k=++i+k; k 就等于 3 ,因为先进行自加 i++ , i 变为 2 ,然后 i 再加上等于 1 的 k ,赋给 k 得 3 ,相当于先i=i+1;再k=k+i; i=1; k=1; k=k+i++ ; k 就等于 2 ,因为先进行 k+i , k变为 2 ,然后 i 再自加等于 2 ,相当于先k=k+i;...
请问一下c语言中++i跟i++,以及——i跟i--的区别啊
++i以及i++和--i以及i--之间的区别原理是一致的,搞清楚一种就能理解另一种了。说一下前缀(++i)自增和后缀(i++)自增之间的区别:以例子来说:例子1:int i = 5 ;int b = 0 ;b = ++i ;例子2:int i= 5 ;int c = 0 ;c = i++ ;两个例子中,例子1里面 b = 6 , ...
单片机c51语言,i++。i--,--i,++i的区别
i++先执行,执行完后,i自加1,++i,先自加1后再执行 例如:int i=1;int a=0,b=0;a=i++;b=i;这里,a=1,b=2;如果把上面的a=i++,改成a=++i;那么 a=2,b=2 i--,--i也是这么个道理
java的 i++ ,++i ,i-- ,--i什么意思啊?
i++是i变量自增1,就是i=i+1的简写,后面的也是一样,都是简写。但是i++与++i是有差别的,int i=1;int num=i++;system.out.println(num);这是输出的Num=1的 int i=1;int num=++i;system.out.println(num);这时输出的Num=2。也就是说,i++是先赋值,后自增。而++i是先自增...
谁能详细的给我讲一下i++,++i,i--,--i的区别阿
1、运算符类型不同:i++使用的是后置自增运算符,++i使用的是前置自增运算符,i--使用的是后置自减运算符,--i使用的是前置自减运算符。递减操作符是“--”,意为“减少一个单位”;递增操作符是“++”,意为“增加一个单位”。2、运算规则不同:++i表示,i自增1后再参与其它运算;而i++...
++i、--i和i++、i--的区别理解
++i、--i和i++、i--的区别:1、执行时间先后顺序不同。++i 先执行i+1后执行程序 i++ 先执行程序后执行i+1 int i=8; printf("%d\\n",++i),先执行加法所以打印出来的是9 printf("%d\\n",--i)。2、执行减法的先后程序不同。先执行减法 打印出来是8 printf("%d\\n",i++)。先执行...