for循环

来源:互联网 发布:淘宝联盟有电脑版吗 编辑:程序博客网 时间:2024/05/13 23:10

犯这么低级傻帽的错误。。。。
在三层for循环嵌套的时候记得各层的变量定义不能笼统的在for循环开始的时候就全部定义。这样的结果就是内层的for循环结果不会随着形参的改变而刷新。最后的到的结果会是所有结果的累加。

 double TotalGpp_ofslice = 0;  for (uiEncCUOrder_Our = uiStartCUAddr / rpcPic->getNumPartInCU();      uiEncCUOrder_Our < (uiBoundingCUAddr + (rpcPic->getNumPartInCU() - 1)) / rpcPic->getNumPartInCU();      uiCUAddr = rpcPic->getPicSym()->getCUOrderMap(++uiEncCUOrder_Our))  {      TComDataCU*& pcCU = rpcPic->getCU(uiCUAddr);      TEncRCSeq* encRCSeq;      double AvgGpp_ofLCU = 0;      double TotalGpp = 0;      UInt  stride = rpcPic->getPicYuvOrg()->getStride();      Pel*  pOrg = rpcPic->getPicYuvOrg()->getLumaAddr(uiCUAddr);      printf("\n now is coding the %d LCU\n", uiEncCUOrder_Our);      for (UInt y = 0; y < 64; y++)      {           double Totalline_Gpp = 0;           for (UInt x = 0; x < 64; x++)          {              double Gppidx = 0;               Gppidx = (abs((pOrg[x] - pOrg[x + 1])) + abs((pOrg[x] - (pOrg + stride)[x])));              //cout << Gppidx << endl;              Totalline_Gpp += Gppidx;//获得一整行的Gpp              //cout << Totalline_Gpp << endl;          }           TotalGpp += Totalline_Gpp;//输出一个LCU的梯度           //cout << TotalGpp << endl;           pOrg += stride;      }      //cout << TotalGpp << endl;//整个LCU的Gpp      AvgGpp_ofLCU = TotalGpp/(64*64);//整个的LCU的Gpp      cout << AvgGpp_ofLCU << endl;      TotalGpp_ofslice += AvgGpp_ofLCU;   }   cout << TotalGpp_ofslice << endl;//循环完之后得到的是整个slice的Gpp
0 0
原创粉丝点击