【C语言】while(i-->0)

 

今天做名解C语言-代码清单6-7的时候,

看到while(i-->0),它的取值是 0到i-1,循环次数为i

例子:

int i=3;
while(i-->0)
    printf("%d\n",i)  //输出 2 1 0 

while括号里的i--和>优先级对比,i--优先级更高

先进行i--操作,此时i=3变为i=2,判断i=2 >0? 符合,然后打印出2

      ......此时i=2变为i=1>0, 打印出1

      ......此时i=1变为i=0=0,打印出0 

      ......此时i=0变为i=-1<0,跳出循环  结果就是2 1 0

while(i-->0)和for(j=0;j<3;j++)循环次数一毛一样

int j;
for (j = 0; j < 3; j++)
    printf("%d\n", j);  //输出0 1 2 

 

 

 

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//打印三角形如图所示,每一行输入对应*的数量
// *
// * *
// * * *
// * * * * 
// * * * * *
void put_star(int no) {
    while (no-- > 0)
        putchar('*');
}

int main() {
    
    int ln = 5;

    int i = 1;
    for (;i <= ln; i++) {
        put_star(i);
        putchar('\n');
    }
    return 0;
}

//i=1<5 putstar(1) i=2
//putstar(1) 判断1-1=0,进入while语句,打印* ,no=0        再次判断no=0,退出while循环
//i=2<5 putstar(2) i=3
//putstar(2) 判断2>0,进入while语句,答应**,no=1      再次判断no=1,执行putstar(1) ......

 

posted @ 2022-07-21 16:34  淫鬻  阅读(296)  评论(0编辑  收藏  举报