设为首页 加入收藏 地图索引
 | 网站首页 | 教育新闻 | 高校联盟 | 在线问答 | 教育综合 高等教育 高考录取 考研考博 基础教育 学前教育 职教成教 民办教育 中考会考 校园花絮 评论
∷∷∷ 当前位置: 中国大学网 >> 在线问答 >> 考试 >> 正文 ∷∷∷
while与do-while的转换
 2008-03-14


while与do-while的转换 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,而 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]



复制网址发给好友    

·学好经济应用数学  线性代数 需要什么基础
·户口问题```
·2008年职称英语什么时候报名
·听课件时到了半小时以上爱走神时怎办
·数学推理题请求帮助请详细说明谢谢
·我想重新捡起会计,应该看哪些书
·乙肝检测会不会成阳性会被认为是乙肝患者或病毒携带者
·判断推理
  • 上一个问答:

  • 下一个问答:
  • 中国大学网
      最新在线问答
    在线问答-栏目导航
    考研
    高考
    中考
    外语
    报考
    考试