与size_t的奇怪循环

时间:2014-01-15 10:43:13

标签: c++ for-loop size-t type-promotion

我没有使用size_t进入循环。为什么? 如果我使用int,我输入循环,输出为:11, 11

int main()
{
   int j = 11; 
   for (size_t i = 11; i > - 1; --j, i -=12)
   {

       std::cout << i << ", " << j << std::endl; 

   }
   return 0;
}

1 个答案:

答案 0 :(得分:7)

size_t通常是无符号值。在你的for循环条件中,你说的是i > -1。由于i是无符号类型,因此-1将转换为此类型,并具有该类型的最大值。

由于促销,您有效地将11(i的初始值)与size_t的最大值进行比较,结果为false,因此永远不会输入循环。