我从C ++开始,我的应用程序在For循环中崩溃。令我感到羞耻的是,我不知道为什么我的程序会像这样。代码:
#include <iostream>
using namespace std;
int main (){
//Vars
int nCountdown;
//Wert eingeben
cout << "Bitte eienen Wert eingeben: ";
cin >> nCountdown;
//ist Wert ungerade?
if (nCountdown % 2 == 0){
cout << "\nBitte einen ungeraden Wert eingeben!";
exit(1);
}
//Schleife
cout << "beginn der schleife" << endl;
for (int i = nCountdown; i == 0; i--){
//Wertausgabe
cout << "\nCountdown bei: " << i << endl;
//Hälfte erreicht?
if (nCountdown / 2 + 1 == i){
cout << "Countdown halbzeit erreicht!" << endl;
}
}
return 0;
}
当我启动应用程序并写入值时,应用程序退出循环的前面。
调出控制台:
Bitte eienn Wert eingeben: 5
beginn der schleife
当我偶然遇到循环:
for (int i = nCountdown; i > 0; i--)
应用程序像我希望的那样工作。
调出控制台:
Bitte eienn Wert eingeben: 5
beginn der schleife
Countdown bei: 5
Countdown bei: 4
Countdown bei: 3
Countdown halbzeit erreicht!
Countdown bei: 2
Countdown bei: 1
我正在使用g +编译cpp文件
g++ --version
g++.exe (MinGW.org GCC-8.2.0-5) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
for (int i = nCountdown; i == 0; i--){ /* body */ }
等效于
int i = nCountdown;
while(i == 0) {
/* body */
i--;
}
这意味着您的循环仅在i
等于0时运行,例如当nCountdown
为0时。这明显不同于第二个(正确的)版本
for (int i = nCountdown; i > 0; i--)
这里,只要i
大于0,循环就会运行。如果要一直计数到零,就应该是
for (int i = nCountdown; i >= 0; i--)
是for循环上的条件,仅当i == 0;
等于0并且将i
设置为i
时才循环,这种情况下的nCountdown
才循环(除非将nCountdown设置为0)并且只能循环一次)。
此条件i > 0
有效,因为您告诉for循环必须在i
大于0时循环。
如果要打印“ Countdown bei:0”,则将循环更改为。
for (int i = nCountdown; i >= 0; i--)
这样,此循环将在我达到0后停止。