n++这种形式是后缀自增1运算,表示先使用n值,然后n=n+1自增1
++i这种形式是前缀自增1运算,表示先对i进行i=i+1自增1,然后再使用i值
如果是单独执行这样的语句,两者没有区别,如:
for( i=0; i<10; ++i ) printf("i=%d\n", i );//输出0-9
与
for( n=0; n<10; n++ ) printf("n=%d\n", n );//输出0-9
这两者都会循环10次,没有差别。而下面的语句:
for( i=0; ++i<10; ) printf("i=%d\n", i ); //输出1-9
与
for( n=0; n++<10; ) printf("n=%d\n", n ); //输出1-10
这两者是有区别的:
++i<10这种,先改变i值,然后判断,所以,循环9次
n++<10这种,先判断,然后改变n值,所以,循环10次
首先,要明确n 与 i的区别:
n ,执行后,表达式的值为n,n自增1
i,执行后,表达式的值为i ,i自增1
表达式的值不同,但执行完后变量的值都自增1,所以用哪种自加都一样。
n++是先判断后执行自加运算,++i是先执行自加运算后进行逻辑判断
举例来讲for(i=1;i<2;i++)会执行一次for循环内的语句,而for(i=1;i<2;++i)则不会
如有疑问,Hi我
你的问题有点混乱,第一个函数里面的循环执行完后n的值为21,后面看不懂了
我猜你是为了区别++i和i++是吧?
简单的回答一下吧
没错,值是一样!但编译器处理过程不一样
不过你试试这个
#include
void main(void)
{
int i;
i = 8;
printf("%d\n", i++);
i = 8;
printf("%d\n", ++i);
}
原因很简单,就是前置++和后置++的区别,应该懂了吧。
for语句的格式为for( ; ; ){ },其中for( 1 ; 2 ; 3)中位置1常常是变量的初始化,位置2是条件判断,位置3是变量的改变,例如:for(int i=0;i < 10 ; i++){},其中花括号中就是for 语句的主体语句。对于n++,++i,这是C语言中的操作符运算,就拿n++;来说,该语句先提取出n的值然后n自增,而++i却相反,该语句表示对i自增。例如:n = 1;i = 1;
a = n++;b = ++i;那么此时a = 1,而n变成2;b=2,i也是2。