2008-03-13
while语句
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
}
do-while语句
void main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
do printf("%d ",a++*2);
while (--n);
}
(为什么转换后,n--变成了--n)
自增运算符 ++ 使操作数的值增 1,其操作数必须为可变左值。++ 可以置于操作数前面,也可以放在后面。例如:
++n ;
n++ ;
这两个语句产生的结果都是使 n 增 1,可以说没什么区别。 使用以下语句得到的效果也是一样的:
n = n + 1 ;
尽管上面两个语句中,++ 前置和后置没有区别。但是,++ 前置和后置其实是有区别的。例如:
int n = 1, post, pre;
post = n++;
pre = ++n;
对于 post = n++; 这个语句,post 得到 n 自增前的值,因为 n++ 的值为 1。 也就是说,这个语句执行完后,post 的值是 1,而 ...全部
自增运算符 ++ 使操作数的值增 1,其操作数必须为可变左值。++ 可以置于操作数前面,也可以放在后面。例如:
++n ;
n++ ;
这两个语句产生的结果都是使 n 增 1,可以说没什么区别。
使用以下语句得到的效果也是一样的:
n = n + 1 ;
尽管上面两个语句中,++ 前置和后置没有区别。但是,++ 前置和后置其实是有区别的。例如:
int n = 1, post, pre;
post = n++;
pre = ++n;
对于 post = n++; 这个语句,post 得到 n 自增前的值,因为 n++ 的值为 1。
也就是说,这个语句执行完后,post 的值是 1,而 n 的值变成 2。而 pre = ++n; 这个语句,pre 得到 n 自增后的值,因为 ++n 的值为 3。也就是说,这个语句执行完后,pre 的值是 3,n 的值也是 3。
总之,无论前置还是后值,++ 都会使其操作数的值增 1。不同的是,++ 前置时,自增表达式(如 ++n)的值等于其操作数自增后的值;++ 后置时,自增表达式(如 n++)的值等于其操作数自增前的值。
例如:
int n = 5, post = 1, pre = 1;
pre = ++n + pre; // 运算结束后 pre 为 7,n 为 6
n = 5;
post = n++ + post; // 运算结束后 post 为 6,n 为 6
上例中,++n 的值等于 n 自增后的值,即 6,所以 pre 最后得到的值为 7。
n++ 的值等于 n 自增前的值,即 5,所以 post 最后得到的值为 6。
----------------------
搞清楚了么 这样的话
设n=3
while(n--)
{
}
2 1 [0]
do
{
}while(--n)
2 1 [0]
。收起