- -n和n- -代表的意思都是n减一,但是也不小的区别,在循环中使用会有相差一次的现象
1:- - n的例子
#include<stdio.h>
int main()
{
int n = 3;
while(--n)
printf("%d\n", n);
}
上面的while(- -n)可以拆分为下面语句,
1: n = n -1
2: while(n)
3:printf("%d\n", n);
这样的话n=3,循环2次
kayshi@ubuntu:~/code/Test$ ./a.out
2
1
2:n- -的例子
#include<stdio.h>
int main()
{
int n = 3;
while(n--)
printf("%d\n", n);
}
上面的while(n–)可以拆分为下面语句,
1: while(n)
2: n = n -1
3:printf("%d\n", n);
这样的话n=3,循环3次
kayshi@ubuntu:~/code/Test$ ./a.out
2
1
0
3:for() 中的使用
++如果和其他语句组合的话,可以这样拆分
for循环的()中最后一个语句++i,可以放到每一次循环的最后,for循环其他语句执行完一遍,它再执行。
for(int i = 0; i< 10; ++i)
printf("%d\n", i);
可以等价与
for(int i = 0; i< 10; )
{
printf("%d\n", i);
++i;
}
所以在for中, ++i 和 i++ 对循环体中的语句来说是没有区别的
4:指针中的使用
while(*src)
*ret++ = *src++;
等价于
while(*src) {
*ret = *src;
ret++;
src++;
}
总结: 如果运算++,–与其他运算组成复杂的语句。则需要拆分来看。
1:如果和while()组合,符号在前拆分后位于while之前,符号在后拆分后位于while之后。和其他运算公式组合,也采用相同的规则
2:如果处于for括号内部,则直接放在for循环体包含的所有语句的最后。