真的想去清华 发表于 2023-3-17 20:38:52

C++简单for循环求助

#include <iostream>
using namespace std;
int main()
{
        cout << "Enter the starting countdown value:";   //countdown:倒数读秒    (输入开始倒计时的值)
        int limit,i;
        cin >> limit;
        for (i = limit; i; i--)
                cout << "i=" << i << "\n";
        cout << "Done now that i=" << i << "\n";
        return 0;

}


for循环,测试表达式的那个i是起什么作用,为什么最后在0结束

傻眼貓咪 发表于 2023-3-17 20:55:05

i 在 1 结束,而你最后是在循环外面打印 i,(虽然循环结束条件已经成立了,但最后i还自减一,1 - 1 = 0)

ethan813 发表于 2023-3-18 11:29:32

for (i = limit; i; i--)
第一个表达式i=limit也就是i=你输入的数
第二个表达式只要i>0为真,i<=0为假,也就是说i>0 for语句就会运行
第三个i--,就是可以理解为先自减后判断
--i意思是先判断后自减
你可以执行以下语句看看:
    char n=0,i=10;
    printf("现在执行的是i--,目前n=%d,i=%d\n",n,i);
    for ( i =i; i>=0 ; i--) {
      n++;
      printf("第%d次执行,i=%d\n",n,i);
    }
    printf("执行完毕,i=%d\n",i);
    n=0,i=10;
    printf("现在执行的是--i,目前n=%d,i=%d\n",n,i);
    for (i=i; i>=0; --i) {
      n++;
      printf("第%d次执行,i=%d\n",n,i);
    }
    printf("执行完毕,i=%d\n",i);
页: [1]
查看完整版本: C++简单for循环求助