C++ 库特<&书信电报;变量打印空白
当desDateYear和todayDateYear之间的差值大于5时,为什么变量“calcDayInt”打印为空?(c++) 只要变量之间的差值小于等于5,代码就可以正常工作并给出正确的答案,但只要我在第一个for循环中增加条件的差值并使其大于5,变量就会给出一个空输出 我试图改变一切,并在一张纸上手动运行代码,但我似乎无法让它工作C++ 库特<&书信电报;变量打印空白,c++,C++,当desDateYear和todayDateYear之间的差值大于5时,为什么变量“calcDayInt”打印为空?(c++) 只要变量之间的差值小于等于5,代码就可以正常工作并给出正确的答案,但只要我在第一个for循环中增加条件的差值并使其大于5,变量就会给出一个空输出 我试图改变一切,并在一张纸上手动运行代码,但我似乎无法让它工作 #include <cstdlib> #include <iostream> #include <string> using
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
int i;
int desDateYear = 21;
int todayDateYear = 15;
int calcDayInt = 4;
int calcDateYear = todayDateYear;
if(desDateYear>todayDateYear)
{
for (i = 0; i < ((desDateYear-todayDateYear)+1); i++)
{
if ((calcDateYear)%4==0)
{
for (i=0; i<2; i++)
{
calcDayInt++;
if(calcDayInt==8)
{
calcDayInt=1;
}
}
}
if ((calcDateYear)%4!=0)
{
calcDayInt++;
if(calcDayInt==8)
{
calcDayInt=1;
}
}
calcDateYear++;
}
}
cout<<calcDayInt;
system("PAUSE");
return EXIT_SUCCESS;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
int i;
int desDateYear=21;
int todayDateYear=15;
int-calcDayInt=4;
int calcDateYear=todayDateYear;
如果(desDateYear>todayDateYear)
{
对于(i=0;i<((desDateYear todayDateYear)+1);i++)
{
如果((calcDateYear)%4==0)
{
因为(i=0;i你被困在一个无限循环中
内部for
循环重用来自外部循环的计数器i
,并覆盖其值。因此,外部循环的终止条件永远不会满足,循环也永远不会结束
通过将循环头更改为以下内容,可以为内部循环使用不同的变量
for (int i=0; i<2; i++)
for(int i=0;iorstd::cout使用调试器,您将看到您没有退出for
循环。主要是因为您在内部for
循环中使用了相同的i
索引。另外,不要使用system(pause)
,它是高度不可移植的,但是使用std::cin.get();
相反。我还要将字母改为j
,否则您无法访问“外部”i
@vsoftco True,为嵌套循环重用循环变量名通常是一个坏主意,会大大降低可读性。我在回答中选择重用i
,只是为了证明在循环头中声明变量时,它会为循环体的范围引入一个新的局部变量。感谢您指出i我不知道。