C++ 库特<&书信电报;变量打印空白

C++ 库特<&书信电报;变量打印空白,c++,C++,当desDateYear和todayDateYear之间的差值大于5时,为什么变量“calcDayInt”打印为空?(c++) 只要变量之间的差值小于等于5,代码就可以正常工作并给出正确的答案,但只要我在第一个for循环中增加条件的差值并使其大于5,变量就会给出一个空输出 我试图改变一切,并在一张纸上手动运行代码,但我似乎无法让它工作 #include <cstdlib> #include <iostream> #include <string> using

当desDateYear和todayDateYear之间的差值大于5时,为什么变量“calcDayInt”打印为空?(c++)

只要变量之间的差值小于等于5,代码就可以正常工作并给出正确的答案,但只要我在第一个for循环中增加条件的差值并使其大于5,变量就会给出一个空输出

我试图改变一切,并在一张纸上手动运行代码,但我似乎无法让它工作

#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;ior
std::cout使用调试器,您将看到您没有退出
for
循环。主要是因为您在内部
for
循环中使用了相同的
i
索引。另外,不要使用
system(pause)
,它是高度不可移植的,但是使用
std::cin.get();
相反。我还要将字母改为
j
,否则您无法访问“外部”
i
@vsoftco True,为嵌套循环重用循环变量名通常是一个坏主意,会大大降低可读性。我在回答中选择重用
i
,只是为了证明在循环头中声明变量时,它会为循环体的范围引入一个新的局部变量。感谢您指出i我不知道。